This package holds the contracts backing DeSci Nodes and the dPID protocol.
Note: all of the steps below are performed automatically as part of the local development cluster setup in the monorepo root, dockerDev.sh
.
In the main docker compose dev cluster we use Ganache, and some deployment scripts may assume keys and addresses based off those assumptions.
Ethereum node: http://localhost:8545
npx hardhat run scripts/deployResearchObject.js --network ganache
## upgrading
npx hardhat run scripts/upgradeResearchObject.js --network ganache
Contract addresses are stored in .openzeppelin/unknown-CHAINID.json
(or mainnet.json
for known chains)
ABIs are stored in artifacts/ResearchObject.sol/ResearchObject.json
.
# ensure logged into AWS using aws-cli
yarn docker:build
yarn docker:push
npx hardhat test
npx hardhat flatten
To compile contracts and generate typechain outputs, run the build
script:
npm run build
You should see TypeScript support for the contracts (i.e. ResearchObject & dPID Registry) for Hardhat Tests and anywhere the contract is called (desci-dapp, desci-server, contract tests) To support IDE autocompletion of smart contract calls from TypeScript we use TypeChain to generate types These types are shipped to desci-contracts/typechain-types as specified in hardhat.config.ts.
Because the local deployment files are only present locally, building the npm package is done with a separate command:
npm run makePackage
# Perform DPID migration to LOCALHOST (ganache)
npx hardhat run scripts/migrateToNewContract.js --network ganache
# Deploy to SEPOLIA. Ensure PRIVATE_KEY is set with wallet containing enough sepolia eth
npx hardhat run scripts/migrateToNewContract.js --network sepoliaDev