Smart Contract ensuring transparent and trustless payment processing between project maintainers (bounty sponsor) and contributors (beneficiary).
- Secure Escrow Management: Holds USDC bounty payments in escrow until task completion.
- Automated Payments: Instant payment release upon task approval.
- Dispute Resolution: Built-in dispute handling with partial payment options.
- Rust (v1.85.0 or higher)
- Stellar CLI
- Git (latest version)
git clone https://github.com/devasignhq/soroban-contracts.git
cd soroban-contractsrustup target add wasm32v1-none# Build the contract
stellar contract build# Create an identity (change 'lenny' to any name you want)
stellar keys generate --global lenny --network testnet --fund
# Get the public key of lenny
stellar keys address lennyFund the account using Stellar's Friendbot
The contract initializes via its constructor, so admin + USDC token are set atomically in the deploy transaction itself.
# Deploy + initialize in one transaction (constructor args after the `--`)
stellar contract deploy \
--wasm target/wasm32v1-none/release/devasign_task_escrow.wasm \
--source-account lenny \
--network testnet \
--alias devasign_task_escrow \
-- \
--admin <ADMIN_ADDRESS> \
--usdc_token <USDC_TOKEN_ADDRESS>
# Verify the deploy landed with the expected wiring before pointing anything at it
stellar contract invoke --id <CONTRACT_ID> --source lenny --network testnet -- get_admin
stellar contract invoke --id <CONTRACT_ID> --source lenny --network testnet -- get_usdc_token
stellar contract invoke --id <CONTRACT_ID> --source lenny --network testnet -- versionFor mainnet, derive the USDC token address from Circle's published issuer — never hand-copy a contract id:
stellar contract id asset \
--asset USDC:GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN \
--network mainnet# Run all tests
cargo test
# Run specific test module
cargo test --test test_contributor_assignmentThis project is licensed under the Apache 2.0 License. See LICENSE for more details.