From e3176403de231d779a2a6c454ec69a3d72efdc61 Mon Sep 17 00:00:00 2001 From: superical Date: Tue, 2 Apr 2024 16:49:52 +0800 Subject: [PATCH] chore: deployment scripts (#163) * chore: add compute address script * chore(deployment): fix check tdoc existence * chore(deployment): output deployed address * chore(deployment): support ledger in deploy script --- bin/deploy.sh | 8 +++++++- package.json | 3 ++- script/ComputeInitializableAddresses.s.sol | 18 ++++++++++++++++++ script/DocumentStore.s.sol | 2 ++ script/DocumentStoreInitializable.s.sol | 4 ++++ script/DocumentStoreUpgradeable.s.sol | 6 +++++- script/TransferableDocumentStore.s.sol | 4 ++++ ...ransferableDocumentStoreInitializable.s.sol | 6 +++++- .../TransferableDocumentStoreUpgradeable.s.sol | 6 +++++- 9 files changed, 52 insertions(+), 5 deletions(-) create mode 100644 script/ComputeInitializableAddresses.s.sol diff --git a/bin/deploy.sh b/bin/deploy.sh index 8499c50..2965530 100755 --- a/bin/deploy.sh +++ b/bin/deploy.sh @@ -19,12 +19,18 @@ if [[ "$4" != "" && "$5" != -* ]]; then fi # forge command -COMMAND="forge script \"$SCRIPT\" --broadcast -i 1 -f \"$NETWORK\" --sender \"$DEPLOYER_ADDRESS\"" +COMMAND="forge script \"$SCRIPT\" --broadcast -f \"$NETWORK\" --sender \"$DEPLOYER_ADDRESS\"" if [ "$VERIFY" -eq 1 ]; then COMMAND="$COMMAND --verify" fi +if [ ! -z "$OA_LEDGER" ]; then + COMMAND="$COMMAND --ledger --hd-paths \"$OA_LEDGER\"" +else + COMMAND="$COMMAND -i 1" +fi + if [ ! -z "$SIG" ]; then COMMAND="$COMMAND -s \"$SIG\"" if [ ! -z "${SIG_PARAMS[*]}" ]; then diff --git a/package.json b/package.json index 26eaede..4a029e5 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,8 @@ "deploy:ds:upgradeable": "npm run -s deploy script/DocumentStoreUpgradeable.s.sol:DocumentStoreUpgradeableScript \"run(string,address)\" \"$npm_config_name\" \"$npm_config_admin\"", "deploy:tds": "npm run -s deploy script/TransferableDocumentStore.s.sol:TransferableDocumentStoreScript \"run(string,string,address)\" \"$npm_config_name\" \"$npm_config_symbol\" \"$npm_config_admin\"", "deploy:tds:impl": "npm run -s deploy script/TransferableDocumentStoreInitializable.s.sol:TransferableDocumentStoreInitializableScript", - "deploy:tds:upgradeable": "npm run -s deploy script/TransferableDocumentStoreUpgradeable.s.sol:TransferableDocumentStoreUpgradeableScript \"run(string,string,address)\" \"$npm_config_name\" \"$npm_config_symbol\" \"$npm_config_admin\"" + "deploy:tds:upgradeable": "npm run -s deploy script/TransferableDocumentStoreUpgradeable.s.sol:TransferableDocumentStoreUpgradeableScript \"run(string,string,address)\" \"$npm_config_name\" \"$npm_config_symbol\" \"$npm_config_admin\"", + "deploy:impl:addresses": "npm run -s deploy script/ComputeInitializableAddresses.s.sol:ComputeInitializableAddresses" }, "devDependencies": { "@nomicfoundation/hardhat-toolbox": "^4.0.0", diff --git a/script/ComputeInitializableAddresses.s.sol b/script/ComputeInitializableAddresses.s.sol new file mode 100644 index 0000000..49aee9b --- /dev/null +++ b/script/ComputeInitializableAddresses.s.sol @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity >=0.8.23 <0.9.0; + +import { console2 } from "forge-std/console2.sol"; +import { DocumentStoreDeployScript } from "./DeployBase.s.sol"; + +contract ComputeInitializableAddresses is DocumentStoreDeployScript { + function run() public view { + bytes32 dsSalt = getDocumentStoreSalt(); + bytes32 tdsSalt = getTransferableDocumentStoreSalt(); + + address dsComputedAddr = computeAddr(dsSalt); + address tdsComputedAddr = computeAddr(tdsSalt); + + console2.log("Document Store Address: ", dsComputedAddr); + console2.log("Transferable Document Store Address: ", tdsComputedAddr); + } +} diff --git a/script/DocumentStore.s.sol b/script/DocumentStore.s.sol index 87ea64c..4df3bc9 100644 --- a/script/DocumentStore.s.sol +++ b/script/DocumentStore.s.sol @@ -20,9 +20,11 @@ contract DocumentStoreScript is DocumentStoreDeployScript { address dsAddr = clone(DS_IMPL, initData); ds = DocumentStore(dsAddr); + console2.log("Deployed Address: ", dsAddr); } else { vm.broadcast(); ds = new DocumentStore(name, admin); + console2.log("Deployed Address: ", address(ds)); } } } diff --git a/script/DocumentStoreInitializable.s.sol b/script/DocumentStoreInitializable.s.sol index d1d6fe7..9c631af 100644 --- a/script/DocumentStoreInitializable.s.sol +++ b/script/DocumentStoreInitializable.s.sol @@ -1,6 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity >=0.8.23 <0.9.0; +import { console2 } from "forge-std/console2.sol"; + import { DocumentStoreDeployScript } from "./DeployBase.s.sol"; import "../src/initializables/DocumentStoreInitializable.sol"; @@ -19,5 +21,7 @@ contract DocumentStoreInitializableScript is DocumentStoreDeployScript { address dsAddr = deploy(dsSalt, initCode); documentStore = DocumentStoreInitializable(dsAddr); + + console2.log("Deployed Address: ", dsAddr); } } diff --git a/script/DocumentStoreUpgradeable.s.sol b/script/DocumentStoreUpgradeable.s.sol index 81008d1..634e3b0 100644 --- a/script/DocumentStoreUpgradeable.s.sol +++ b/script/DocumentStoreUpgradeable.s.sol @@ -14,8 +14,12 @@ contract DocumentStoreUpgradeableScript is DocumentStoreDeployScript { console2.log("DocumentStore Name: ", name); console2.log("DocumentStore Admin: ", admin); - vm.broadcast(); + vm.startBroadcast(); (address pAddr, ) = DeployUtils.deployDocumentStoreUpgradeable(name, admin); + vm.stopBroadcast(); + ds = DocumentStoreUpgradeable(pAddr); + + console2.log("Deployed Address: ", pAddr); } } diff --git a/script/TransferableDocumentStore.s.sol b/script/TransferableDocumentStore.s.sol index 188f2c1..c07ebf9 100644 --- a/script/TransferableDocumentStore.s.sol +++ b/script/TransferableDocumentStore.s.sol @@ -21,9 +21,13 @@ contract TransferableDocumentStoreScript is TransferableDocumentStoreDeployScrip address dsAddr = clone(TDS_IMPL, initData); ds = TransferableDocumentStore(dsAddr); + + console2.log("Deployed Address: ", dsAddr); } else { vm.broadcast(); ds = new TransferableDocumentStore(name, symbol, admin); + + console2.log("Deployed Address: ", address(ds)); } } } diff --git a/script/TransferableDocumentStoreInitializable.s.sol b/script/TransferableDocumentStoreInitializable.s.sol index 0c3626d..6fa90a9 100644 --- a/script/TransferableDocumentStoreInitializable.s.sol +++ b/script/TransferableDocumentStoreInitializable.s.sol @@ -1,12 +1,14 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity >=0.8.23 <0.9.0; +import { console2 } from "forge-std/console2.sol"; + import { TransferableDocumentStoreDeployScript } from "./DeployBase.s.sol"; import "../src/initializables/TransferableDocumentStoreInitializable.sol"; contract TransferableDocumentStoreInitializableScript is TransferableDocumentStoreDeployScript { function run() public returns (TransferableDocumentStoreInitializable documentStore) { - require(!dsImplExists(), "TransferableDocumentStoreInitializable already exists"); + require(!tdsImplExists(), "TransferableDocumentStoreInitializable already exists"); bytes memory initCode = abi.encodePacked(type(TransferableDocumentStoreInitializable).creationCode); @@ -19,5 +21,7 @@ contract TransferableDocumentStoreInitializableScript is TransferableDocumentSto address dsAddr = deploy(dsSalt, initCode); documentStore = TransferableDocumentStoreInitializable(dsAddr); + + console2.log("Deployed Address: ", dsAddr); } } diff --git a/script/TransferableDocumentStoreUpgradeable.s.sol b/script/TransferableDocumentStoreUpgradeable.s.sol index 5cf3106..6dda6e1 100644 --- a/script/TransferableDocumentStoreUpgradeable.s.sol +++ b/script/TransferableDocumentStoreUpgradeable.s.sol @@ -19,8 +19,12 @@ contract TransferableDocumentStoreUpgradeableScript is TransferableDocumentStore console2.log("TransferableDocumentStore Symbol: ", symbol); console2.log("TransferableDocumentStore Admin: ", admin); - vm.broadcast(); + vm.startBroadcast(); (address pAddr, ) = DeployUtils.deployTransferableDocumentStoreUpgradeable(name, symbol, admin); + vm.stopBroadcast(); + ds = TransferableDocumentStoreUpgradeable(pAddr); + + console2.log("Deployed Address: ", pAddr); } }