Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/develop' into cohort/spaghetteth
Browse files Browse the repository at this point in the history
  • Loading branch information
yuetloo committed Nov 14, 2023
2 parents 2a4e822 + fb3b0ae commit 8741033
Show file tree
Hide file tree
Showing 29 changed files with 461 additions and 89 deletions.
40 changes: 40 additions & 0 deletions .github/workflows/mantle_cancel_round.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Mantle testnet - Cancel current round

on:
workflow_dispatch:
inputs:
branch_name:
description: 'Clrfund branch name'
required: true
default: 'cohort/EthSingapore'
factory:
description: 'Clrfund factory address'
required: true
default: '0x006f39E6a6D15323334Be1db34C73088550BB20a'
network:
description: 'Network'
required: true
default: 'mantle-testnet'


env:
NODE_VERSION: 16.x
WALLET_PRIVATE_KEY: ${{ secrets.MANTLE_TESTNET_COORDINATOR_WALLET_PRIVATE_KEY }}

jobs:
cancel-round:
runs-on: ubuntu-22.04
steps:
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
- name: Checkout source code
uses: actions/checkout@v3
- name: Build CLR
run: |
yarn && yarn build
- name: Run the cancel round script
run: |
cd contracts
yarn hardhat cancel-round --factory "${{ github.event.inputs.factory }}" --network "${{ github.event.inputs.network }}"
40 changes: 40 additions & 0 deletions .github/workflows/mantle_create_new_round.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Mantle testnet - Create new round

on:
workflow_dispatch:
inputs:
branch_name:
description: 'Clrfund branch name'
required: true
default: 'cohort/EthSingapore'
factory:
description: 'Clrfund factory address'
required: true
default: '0x006f39E6a6D15323334Be1db34C73088550BB20a'
network:
description: 'Network'
required: true
default: 'mantle-testnet'

env:
NODE_VERSION: 16.x
WALLET_PRIVATE_KEY: ${{ secrets.MANTLE_TESTNET_COORDINATOR_WALLET_PRIVATE_KEY }}

jobs:
create-new-round:
runs-on: ubuntu-22.04
steps:
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
- name: Checkout source code
uses: actions/checkout@v3
- name: Build CLR
run: |
yarn && yarn build
- name: Run create new round script
run: |
cd contracts
export FACTORY_ADDRESS="${{ github.event.inputs.factory }}"
yarn hardhat run scripts/newRound.ts --network "${{ github.event.inputs.network }}"
76 changes: 76 additions & 0 deletions .github/workflows/mantle_finalize_round.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: Mantle testnet - Finalize round

on:
workflow_dispatch:
inputs:
branch_name:
description: 'Clrfund branch name'
required: true
default: 'cohort/EthSingapore'
maci_start_block:
description: 'MACI contract creation block'
required: true
default: '1'
subgraph_url:
description: 'Clrfund subgraph url'
required: true
default: 'https://graph.testnet.mantle.xyz/subgraphs/name/clrfund-ethsingapore-test'
network:
description: 'Network'
required: true
default: 'mantle-testnet'

env:
NODE_VERSION: 16.x
NETWORK: "arbitrum-goerli"
COORDINATOR_ETH_PK: ${{ secrets.MANTLE_TESTNET_COORDINATOR_WALLET_PRIVATE_KEY }}
COORDINATOR_PK: ${{ secrets.MANTLE_TESTNET_COORDINATOR_MACI_PRIVATE_KEY }}

jobs:
finalize:
runs-on: ubuntu-22.04
steps:
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
- name: Install g++ library dependencies
run: |
sudo apt update
sudo apt-get install build-essential libgmp-dev libsodium-dev nlohmann-json3-dev nasm g++ curl
- name: Install rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: Install zkutil
run: |
cargo install zkutil --version 0.3.2
- name: Checkout source code
uses: actions/checkout@v3
with:
ref: ${{ github.event.inputs.branch_name }}
- name: Download batch 64 params
run: |
ls -la $GITHUB_WORKSPACE
$GITHUB_WORKSPACE/.github/scripts/download-batch64-params.sh
- name: Build
run: |
yarn && yarn build
- name: Run finalize scripts
run: |
export SUBGRPAH_URL="${{ github.event.inputs.subgraph_url }}"
echo $SUBGRAPH_URL
export NODE_CONFIG=$(node -e "const snarkParamsPath=process.env.GITHUB_WORKSPACE + '/params'; console.log(JSON.stringify({ snarkParamsPath }));")
export ROUND=$(curl -X POST -d '{"query":"{fundingRoundFactories {id currentRound {id maci}}}"}' $SUBGRPAH_URL)
export FACTORY_ADDRESS=$(node -e 'console.log(JSON.parse(process.env.ROUND).data.fundingRoundFactories[0].id)')
export ROUND_ADDRESS=$(node -e 'console.log(JSON.parse(process.env.ROUND).data.fundingRoundFactories[0].currentRound.id)')
export MACI_ADDRESS=$(node -e 'console.log(JSON.parse(process.env.ROUND).data.fundingRoundFactories[0].currentRound.maci)')
export MACI_START_BLOCK="${{ github.event.inputs.maci_start_block }}"
echo "MACI_START_BLOCK:" $MACI_START_BLOCK
# tally and finalize
cd contracts
yarn hardhat tally --round-address "${ROUND_ADDRESS}" --network "${NETWORK}"
curl --location --request POST 'https://api.pinata.cloud/pinning/pinFileToIPFS' \
--header "Authorization: Bearer ${{ secrets.PINATA_JWT }}" \
--form 'file=@"tally.json"'
yarn hardhat run --network "${NETWORK}" scripts/finalize.ts
43 changes: 43 additions & 0 deletions .github/workflows/mantle_set_duration.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Mantle testnet - Set voting duration

on:
workflow_dispatch:
inputs:
voting_period:
description: 'Voting period in minutes'
required: true
default: '120'
reallocation_period:
description: 'Reallocation period in minutes'
required: true
default: '1'
factory:
description: 'Clrfund factory address'
required: true
default: '0x006f39E6a6D15323334Be1db34C73088550BB20a'
network:
description: 'Network'
required: true
default: 'mantle-testnet'

env:
NODE_VERSION: 16.x
WALLET_PRIVATE_KEY: ${{ secrets.MANTLE_TESTNET_COORDINATOR_WALLET_PRIVATE_KEY }}

jobs:
set-durations:
runs-on: ubuntu-22.04
steps:
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
- name: Checkout source code
uses: actions/checkout@v3
- name: Build CLR
run: |
yarn && yarn build
- name: Run the set duration script
run: |
cd contracts
yarn hardhat set-durations --factory "${{ github.event.inputs.factory }}" --signup "${{ github.event.inputs.voting_period }}" --voting "${{ github.event.inputs.reallocation_period }}" --network "${{ github.event.inputs.network }}"
15 changes: 15 additions & 0 deletions contracts/contracts/recipientRegistry/BaseRecipientRegistry.sol
Original file line number Diff line number Diff line change
Expand Up @@ -146,4 +146,19 @@ abstract contract BaseRecipientRegistry is IRecipientRegistry {
function getRecipientCount() public view returns(uint256) {
return slots.length - removed.length;
}

/**
* @dev Make a unique recipient id for different registries
* @param _registry Recipient registry address
* @param _recipient Recipient address
* @param _metadata Recipient metadata
* @return recipient id
*/
function makeRecipientId(address _registry, address _recipient, string calldata _metadata)
internal
pure
returns(bytes32)
{
return keccak256(abi.encodePacked(_registry, _recipient, _metadata));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ contract OptimisticRecipientRegistry is Ownable, BaseRecipientRegistry {
{
require(_recipient != address(0), 'RecipientRegistry: Recipient address is zero');
require(bytes(_metadata).length != 0, 'RecipientRegistry: Metadata info is empty string');
bytes32 recipientId = keccak256(abi.encodePacked(_recipient, _metadata));
bytes32 recipientId = makeRecipientId(address(this), _recipient, _metadata);
require(recipients[recipientId].index == 0, 'RecipientRegistry: Recipient already registered');
require(requests[recipientId].submissionTime == 0, 'RecipientRegistry: Request already submitted');
require(msg.value == baseDeposit, 'RecipientRegistry: Incorrect deposit amount');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ contract PermissionedRecipientRegistry is Ownable, BaseRecipientRegistry {
{
require(_recipient != address(0), 'RecipientRegistry: Recipient address is zero');
require(bytes(_metadata).length != 0, 'RecipientRegistry: Metadata info is empty string');
bytes32 recipientId = keccak256(abi.encodePacked(_recipient, _metadata));
bytes32 recipientId = makeRecipientId(address(this), _recipient, _metadata);
require(recipients[recipientId].index == 0, 'RecipientRegistry: Recipient already registered');
require(requests[recipientId].submissionTime == 0, 'RecipientRegistry: Request already submitted');
require(msg.value == baseDeposit, 'RecipientRegistry: Incorrect deposit amount');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ contract SimpleRecipientRegistry is Ownable, BaseRecipientRegistry {
{
require(_recipient != address(0), 'RecipientRegistry: Recipient address is zero');
require(bytes(_metadata).length != 0, 'RecipientRegistry: Metadata info is empty string');
bytes32 recipientId = keccak256(abi.encodePacked(_recipient, _metadata));
bytes32 recipientId = makeRecipientId(address(this), _recipient, _metadata);
uint256 recipientIndex = _addRecipient(recipientId, _recipient);
emit RecipientAdded(recipientId, _recipient, _metadata, recipientIndex, block.timestamp);
}
Expand Down
4 changes: 4 additions & 0 deletions contracts/hardhat.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@ const config: HardhatUserConfig = {
process.env.JSONRPC_HTTP_URL || 'https://goerli-rollup.arbitrum.io/rpc',
accounts,
},
'mantle-testnet': {
url: process.env.JSONRPC_HTTP_URL || 'https://rpc.testnet.mantle.xyz',
accounts,
},
rinkarby: {
url: process.env.JSONRPC_HTTP_URL || 'https://rinkeby.arbitrum.io/rpc',
accounts,
Expand Down
2 changes: 2 additions & 0 deletions contracts/tasks/exportRound.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ type RoundListEntry = {
network: string
address: string
startTime: number
votingDeadline: number
isFinalized: boolean
}

Expand Down Expand Up @@ -378,6 +379,7 @@ task('export-round', 'Export round data for the leaderboard')
network: network.name,
address: round.address,
startTime: round.startTime,
votingDeadline: round.endTime,
isFinalized: round.isFinalized && !round.isCancelled,
})
}
Expand Down
Loading

0 comments on commit 8741033

Please sign in to comment.