{"id":29177881,"url":"https://github.com/gitcoinco/bulktransactions","last_synced_at":"2025-07-01T18:09:03.907Z","repository":{"id":38763728,"uuid":"267023088","full_name":"gitcoinco/BulkTransactions","owner":"gitcoinco","description":"Smart contracts for Gitcoin grants bulk checkout functionality","archived":false,"fork":false,"pushed_at":"2023-01-24T03:49:51.000Z","size":1547,"stargazers_count":36,"open_issues_count":13,"forks_count":22,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-04-15T13:43:14.150Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gitcoinco.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-05-26T11:20:29.000Z","updated_at":"2024-03-07T19:28:17.000Z","dependencies_parsed_at":"2023-02-13T16:15:53.488Z","dependency_job_id":null,"html_url":"https://github.com/gitcoinco/BulkTransactions","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gitcoinco/BulkTransactions","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitcoinco%2FBulkTransactions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitcoinco%2FBulkTransactions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitcoinco%2FBulkTransactions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitcoinco%2FBulkTransactions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gitcoinco","download_url":"https://codeload.github.com/gitcoinco/BulkTransactions/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitcoinco%2FBulkTransactions/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263013739,"owners_count":23399815,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-01T18:09:00.642Z","updated_at":"2025-07-01T18:09:03.894Z","avatar_url":"https://github.com/gitcoinco.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gitcoin Grants Checkout Contracts\n\nThis repository contains smart contracts used during the Gitcoin grants checkout process.\n\n- [Gitcoin Grants Checkout Contracts](#gitcoin-grants-checkout-contracts)\n  - [Contracts](#contracts)\n    - [Bulk Checkout](#bulk-checkout)\n    - [Batch ZkSync Deposit](#batch-zksync-deposit)\n  - [Development](#development)\n    - [Setup](#setup)\n    - [Deployment](#deployment)\n\n## Contracts\n\n### Bulk Checkout\n\n`BulkCheckout.sol` improves the checkout UX and reduces gas costs by enabling users to donate\nto multiple grants with one L1 transaction (ignoring the required ERC20 approval transactions).\nThis contract has been deployed on the following networks,\n\n- Ethereum Mainnet and Rinkeby at [0x7d655c57f71464B6f83811C55D84009Cd9f5221C](https://etherscan.io/address/0x7d655c57f71464B6f83811C55D84009Cd9f5221C)\n- Polygon (MATIC) Mumbai Testnet at [0x3E2849E2A489C8fE47F52847c42aF2E8A82B9973](https://mumbai.polygonscan.com/address/0x3E2849E2A489C8fE47F52847c42aF2E8A82B9973)\n- Polygon (MATIC) Mainnet at [0xb99080b9407436eBb2b8Fe56D45fFA47E9bb8877](https://polygonscan.com/address/0xb99080b9407436eBb2b8Fe56D45fFA47E9bb8877)\n\nIt was compiled with Solidity 0.6.7.\n\n### Batch ZkSync Deposit\n\nThe deposit functions on the [zkSync contract](https://etherscan.io/address/0xabea9132b05a70803a4e85094fd0e1800777fbef)\nonly allow users to deposit one currency per transaction. This means if a user wants to use zkSync to\ndonate, for example, ETH, USDC, and DAI to different grants, three transactions would be required to\ndeposit all three currencies into zkSync. `BatchZkSyncDeposit.sol` improves the UX of this process\nand reduces gas costs by batching these deposit calls, so all three deposits are executed with\njust one L1 transaction (ignoring the required ERC20 approval transactions).\n\nThis contract has been deployed on both Mainnet and Rinkeby at \n[0x9D37F793E5eD4EbD66d62D505684CD9f756504F6](https://etherscan.io/address/0x9D37F793E5eD4EbD66d62D505684CD9f756504F6)\nand was compiled with Solidity 0.6.12. \n\n\n## Development\n\n### Setup\n\n1. Create a file called `.env` with the following contents:\n   ```bash\n   INFURA_ID=yourInfuraId\n   MNEMONIC_TESTNET=\"your mnemonic for development\" # only needed for deployment\n   MNEMONIC_MAINNET=\"your mnemonic for production\" # only needed for deployment\n   ```\n2. Install dependencies with `yarn`\n3. Run tests with `yarn test`\n\n### Deployment\n\nTo deploy a new version of the above contracts:\n\n1. Open `networks.js` and configure the object for the network you want to deploy to\n   1. You may want to change the gas price (specified in wei) if deploying to mainnet\n   2. You may want to change the derivation path based on the result of the next step. See the [`@truffle/hdwallet-provider`](https://github.com/trufflesuite/truffle/tree/master/packages/hdwallet-provider) for more information.\n2. Run `npx oz accounts` and select the network you wish to deploy to. The default account will be used unless otherwise specified in a later step.\n   1. If you do not see the desired account, you likely need to change the derivation path. See the `@truffle/hdwallet-provider` docs linked above for instructions on how to change this\n3. Run the appropriate compile script based on the contract you want to deploy. Either `yarn run compile-bulkCheckout` or `yarn run compile-batchZkSync`\n4. Run `yarn run deploy` and follow the prompts to deploy the contract.\n   1. If step 2 did not show the desired account as the default account, but you see the desired account in that list, instead run `npx oz deploy --skip-compile --from \u003cdesiredAddress\u003e`. See the [OpenZeppelin CLI docs](https://docs.openzeppelin.com/cli/2.8/commands#deploy) for more information\n5. Once deployment is complete, you'll see a file in the `.openzeppelin` folder called `\u003cnetwork\u003e.json`, where `\u003cnetwork\u003e` is the network you deployed to. The file contains an array of objects containing information on each contract deployment.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgitcoinco%2Fbulktransactions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgitcoinco%2Fbulktransactions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgitcoinco%2Fbulktransactions/lists"}