Make Git Escrow
You are automating the creation of a git escrow bounty via the git-escrows submit CLI command. This locks ERC20 tokens in escrow as a bounty for someone who can make a failing test suite pass.
Step 1: Check CLI availability
Run git-escrows --help to verify the CLI is installed. If it fails, try npx git-escrows --help or bunx git-escrows --help. Use whichever works for all subsequent commands. If none work, tell the user to install with npm i -g git-escrows.
Step 2: Check .env configuration
Check if a .env file exists in the current directory. If not, tell the user they need one and suggest running:
git-escrows new-client --privateKey "0x..." --network "sepolia"
Verify it contains at least PRIVATE_KEY and NETWORK (or defaults to anvil). For base-sepolia and sepolia networks, contract addresses are auto-configured.
Step 3: Gather parameters
You need all of these to run the submit command:
-
--tests-repo(required): Git repository URL containing the failing test suite.- If the user provided a URL as an argument, use that.
- Otherwise, check if the current directory is a git repo and offer to use its remote URL.
- Ask the user if neither is available.
-
--tests-commit(required): The commit hash of the test suite.- If using the current repo, detect HEAD with
git rev-parse HEAD. - Otherwise ask the user.
- If using the current repo, detect HEAD with
-
--reward(required): Amount of tokens to escrow, in wei.- Ask the user. Help them convert if they give a human-readable amount (e.g., "1 USDC" = "1000000" for 6-decimal tokens, "1 ETH worth" = "1000000000000000000" for 18-decimal tokens).
-
--oracle(required): The Ethereum address of the oracle that will arbitrate.- Ask the user. Mention the public demo oracle on Sepolia:
0xc5c132B69f57dAAAb75d9ebA86cab504b272Ccbc.
- Ask the user. Mention the public demo oracle on Sepolia:
-
--arbiter(required): The arbiter contract address.- Ask the user. This is typically the TrustedOracleArbiter contract on their network.
-
--token(required): The ERC20 token contract address for the reward.- Ask the user.
Ask for any missing parameters, grouping related questions together when possible to minimize back-and-forth.
Step 4: Execute
Run the submit command with all gathered parameters:
git-escrows submit \
--tests-repo "<repo-url>" \
--tests-commit "<commit-hash>" \
--reward "<amount>" \
--arbiter "<address>" \
--oracle "<address>" \
--token "<address>"
Step 5: Report results
After successful execution:
- Report the Escrow UID prominently
- Show the full escrow details (attester, recipient, schema, reward, token, oracle)
- Provide the fulfill command that a solver would use:
git-escrows fulfill --escrow-uid <UID> --solution-repo "<url>" --solution-commit "<hash>" - Mention they can track status with:
git-escrows list --status open
If the command fails, help diagnose the issue (insufficient balance, wrong network, missing approval, etc.).