Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Welcome to the Smart Escrow Design section.
To simplify the design process, we have subdivided the escrow lifecycle into distinct phases. Click on any phase to learn more:
Each phase plays a crucial role in the lifecycle, and each participating party has one or more defined roles.
To understand how roles interact accross the lifecycle, visit the Roles in Trustless Work
Start designing your escrow configurations visually using our Figma template. Feel free to copy it and accelerate your Go To market by correctly planning your Trustless Work integration!
https://www.figma.com/community/file/1456840320155816764/trustless-design-framework
Dapp:
Before we begin designing, let's understand what each role represents!
Now that you know how an escrow looks like, lets understand roles and their significance within the escrow lifecycle.
Roles are assigned to specific addresses, however, anyone can deposit funds into an escrow, and reading the escrow's configuration, status, and transaction history doesn't require an assigned role.
Roles: Each role has a distinct function within the escrow process, such as approving milestones or releasing payments.
Parties: These are the entities or individuals assigned to one or more roles, such as buyers, sellers, or platforms. They interact through a Stellar wallet for signing any interactions with the escrow. Only addresses with assigned roles can interact with the escrow.
1. Milestone Approver
Function: Approves or disputes milestones marked as completed.
Examples:
Buyer in a freelance marketplace approves the deliverable marked as done by the freelancer.
Host in a security deposit scenario approves the checkout marked as done by the turist.
Platform in a crowdfunding campaign approves milestone marked as done by the company.
2. Milestone Marker
Function: Delivers the product, service, or objective set on milestine. Marks milestones as completed and ready for approval.
Examples:
Freelancer delivering a service and marking it as complete.
Company updating crowdfunding milestones and marking as complete.
Compliance department marking a withdraw complaince check as complete.
Real Estate inspector marks the house inispections as complete.
3. Release Signer
Function: Approves the release of funds for the amount set.
Release currently works as following: -All milestones need to be approved for payment to be released, since we are setting 1 amount for the whole contract. This will be changed to: Each individual milestone will have an amount, each amount can be individually released when approved.
Examples:
Airbnb (platform) releasing a deposit.
eBay (platform) releasing payment to a seller.
DAO releasing a payment to a contributor
4. Dispute Resolver
Function: Resolves disputes by adjusting milestone amounts, updating status, or canceling the contract.
Examples:
Platform (eBay, Airbnb) acting as arbiter for a deposit because turist broke something redirecting deposit to host.
Independent third-party arbitrator setting a new milestone price for an project milestone.
Cenceling an escrow amount and redirecting funds back to Client.
5. Receiver - Final Recipient
Function: The final recipient of funds after conditions are met or disputes are resolved.
Examples:
Freelancer receiving payment.
Turist receiving a security deposit.
Company receiving funds
6. Platform Address
Function: An address designated to receive the platform fee, a percentage or fixed amount of the total funds processed through escrow.
Examples:
Airbnb collecting platform fees.
Crowdfunding platform taking a fee from funds raised.
This explanation is for the Multiple-release type of contract (to be available soon). The single release is very similar, just that there is only one release if and only if all milestones are approved.
The Milestone Status Update Phase is where the Milestone Marker signals progress by marking a milestone as completed. This step is critical for keeping all participants informed about the transaction's progress and prepares the milestone for review by the Milestone Approver in the subsequent Approval Phase.
1. Milestone Marker Updates Milestone Status
The Milestone Marker logs into the platform or uses the Trustless Work API to update the milestone status to For Review, he signs the transaction, signaling the completion of the deliverable.
2. Escrow Contract Updates
Upon the signed update, the escrow contract:
Changes the milestone status to For Review.
Retains the Approved Flag as False
until explicitly approved or disputed by the Milestone Approver.
3. Notification to Milestone Approver
The platform detects the status update and notifies the Milestone Approver that the milestone is ready for review.
4. Transparency for All Participants
All participants, including the Milestone Marker, Release Signer, and Platform Address, can view the updated milestone status:
On-chain via the transaction ID or Stellar block explorer.
Through the Escrow Viewer or by querying the Trustless Work API.
Milestone Status:
For Review: Indicates the milestone is ready for approval or dispute.
Approved Flag:
Default = False: Remains unchanged until explicitly approved or disputed by the client.
Progress Details (to be added):
Optional fields can include:
Delivery notes.
Evidence of completion (e.g., reference IDs or uploaded documentation).
Blockchain Visibility: All participants can view the updated milestone status on-chain, ensuring transparency and traceability of progress.
Platform Notifications: The platform plays a key role in notifying the client (Alice) about the milestone update, facilitating smooth communication.
Optional Progress Details: The service provider can add supporting details or documentation (e.g., delivery receipts, tracking numbers) to enhance transparency.
Milestone Progress Recorded:
The service provider’s update is recorded on-chain, ensuring transparency and traceability.
Client Notified for Review:
The client (Alice) is notified to review the milestone and take action in the next phase.
Escrow Contract Reflects Progress:
The escrow contract’s milestone status is updated, preparing the transaction for the Approval Phase.
Base URL: https://api.trustlesswork.com
The smart contract that holds funds and enforces the conditions of the agreement between the Service Provider and the Signer.
Funds are deposited into the escrow contract, either manually by a party or automatically via an API call.
Deploys the escrow contract and defines its properties.
URL: /deployer/invoke-deployer-contract
signer: Entity that signs the transaction that deploys and initializes the escrow engagementId: Unique identifier for the escrow
title: Name of the escrow
description: Text describing the function of the escrow
client: Address of the entity requiring the service
serviceProvider: Address of the entity providing the service
platformAddress: Address of the platform that owns the escrow
amount: Amount to be transferred upon completion of escrow milestones
platformFee: Commission that the platform will receive when the escrow is completed
milestones: Objectives to be completed to define the escrow as completed releaseSigner: Address of the entity in charge of releasing escrow funds
disputeResolver: Address in charge of resolving disputes within the escrow
Prievious Version:
POST
escrow/initialize-escrow
Headers
Body
Example of Request Body:
Possible Responses
Prices
The Approval Phase is where the Milestone Approver evaluates the milestone marked as For Review by the Milestone Marker. This critical step determines whether the milestone is approved or disputed, dictating the next steps in the escrow process and transitioning the transaction toward completion or resolution.
1. Milestone Approver Reviews the Milestone
The Milestone Approver evaluates the deliverable or service associated with the milestone, referencing any supporting evidence or details provided by the Milestone Marker.
2. Decision: Approve or Dispute
Approve:
If satisfied, the Milestone Approver approves the milestone.
The Approved Flag is updated to True
, signaling that the transaction can proceed toward the Release Phase.
Dispute:
If concerns arise, the Milestone Approver disputes the milestone.
The Approved Flag is updated to On Dispute
, pausing the transaction and escalating it to the Dispute Resolver.
Next Steps: the approved / dispute flag determines what Next step on the excrow lifecycle is enabled.
If the milestone is approved, the Release is possible,
If a dispute is raised, the dispute resolver must set a resolution and either update the amount, or cancel the milestone.
1. Milestone Status
For Review: Indicates the milestone is under review by the Milestone Approver.
On Dispute: Set when the milestone is disputed, triggering resolution by the Dispute Resolver.
2. Approved Flag
True: Set when the Milestone Approver approves the milestone.
Milestone Approver Authority: The Milestone Approver has sole authority to approve or dispute milestones, ensuring their satisfaction with the deliverable.
Platform's Role: The platform facilitates the review process by providing tools and notifications to assist the Milestone Approver.
On-Chain Transparency: All participants, including the Milestone Marker, Release Signer, and Platform Address, can track the milestone’s status and associated decisions on-chain.
Dispute Escalation: Disputes trigger the transaction to enter the Dispute Resolution Phase, ensuring fair and transparent resolution before proceeding.
A Journey in Phases
The escrow lifecycle represents the structured flow of actions and responsibilities involved in securely managing a transaction. At Trustless Work, we break this lifecycle into clear, logical phases, ensuring transparency and adaptability for diverse use cases.
Initiation Phase: The foundation of the process, where roles, responsibilities, and transaction terms are established, and the escrow contract is created. Learn More
Funding Phase: The phase where the funds are deposited into the escrow contract, securing the transaction and preparing for the next steps.
Milestone Updates Phase: As the transaction progresses, milestones are marked as completed by the designated party, providing visibility and enabling reviews.
Approval Phase: The phase where milestones are reviewed and approved (or disputed), moving the transaction closer to resolution.
Release Phase: Funds are released to the designated recipient based on milestone approvals or dispute resolutions, completing the financial component of the transaction.
Closure Phase: Marks the official end of the escrow process, ensuring all conditions are met, funds are distributed, and the contract is finalized.
In some scenarios, the lifecycle may include additional phases to address unique circumstances:
Dispute Resolution Phase: Engaged when there are disagreements between parties, this phase ensures fairness by resolving disputes and determining the final outcome.
Escrow Cancellation Phase: Allows for the early termination of the escrow contract under specific conditions, ensuring any funds or fees are appropriately handled.
The Release Phase is initiated when the Release Signer approves the release of funds. This triggers the escrow smart contract to perform verification checks, deduct fees, and securely disburse funds to the Receiver. The escrow is then marked as completed, concluding the transaction.
1. Triggering the Release
The Release Signer signs the release transaction, signaling the intent to disburse funds.
The escrow smart contract initiates the release process.
2. Verification of Milestones
The escrow smart contract verifies:
All milestones have their Approved Flag set to True
.
No milestones are in a disputed state (Approved Flag ≠On Dispute).
3. Fee Deductions
Upon successful verification, the escrow contract calculates and deducts:
The Platform Fee (e.g., Marketplace fee%) as configured during the Initiation Phase.
The Trustless Work Fee (e.g., 0.3%).
4. Funds Disbursement
The remaining funds are transferred to the Receiver Address designated during the Initiation Phase
5. Completion
The escrow contract is marked as Completed, signaling the successful conclusion of the transaction.
1. Release Signer
The entity responsible for triggering the release by signing the transaction.
2. Milestone Approval Check
Confirms that:
All milestones are approved (Approved Flag = True
).
No unresolved disputes exist.
3. Fee Deductions
Platform Fee Deduction: Calculated and deducted from the total escrowed amount.
Trustless Work Fee Deduction: A fixed percentage (e.g., 0.3%) is deducted for using the Trustless Work infrastructure.
4. Receiver Address
The blockchain address of the Receiver, who will receive the funds (e.g., Freelancer, Host, Company).
5. Release Transaction ID
A blockchain reference (e.g., tx456def
) for the release action, ensuring traceability and transparency.
1. Funds Transferred Securely
The Receiver (e.g., Freelancer, Host) receives the funds, minus the Platform Fee and Trustless Work Fee.
2. Escrow Marked as Completed
The escrow status is updated to Completed, reflecting the transaction's successful conclusion.
3. Transparency Maintained
All participants can trace the release process on-chain using the Release Transaction ID, ensuring full visibility and trust.
In this section, you'll see all the attributes of the Escrow Entity.
How to get started in Trustless Work API
You'll have 50 as a request rate limit per client in the API every 60 seconds.
The Trustless Work REST API is designed to offer decentralized escrow solutions by leveraging the power of smart contracts on the Stellar blockchain through Soroban. This API enables platforms and businesses to integrate secure, fast, and transparent escrow services, eliminating the need to rely on centralized intermediaries.
The Trustless Work API is a key component for any platform that requires secure conditional payments. It allows the creation, management, and automation of escrow contracts, providing security for both payers and payees. This API can be used across various industries including e-commerce, SaaS, real estate, freelance marketplaces, and more.
Create and manage escrow contracts: Users can set up payment agreements with specific conditions that must be met before funds are released.
Real-time status updates: The API provides real-time access to escrow statuses, allowing users to verify the state of funds at any time.
Process automation: Through the use of smart contracts, actions such as fund releases, milestone verification, or dispute resolution can be automated.
This API is critical for offering businesses an efficient and secure way to manage payments without relying on third-party services. Trustless Work’s decentralized nature eliminates the risks associated with centralized intermediaries, such as delays or failures. Additionally, being blockchain-based guarantees full transparency and a significant reduction in operational costs.
Transparency: Every transaction is recorded on the blockchain, making it auditable and ensuring that all parties can track the flow of funds.
Low Costs: Built on Stellar, the API benefits from minimal transaction fees compared to traditional solutions or even other blockchain platforms.
Speed: Stellar's fast transaction finality ensures that payments are processed almost in real-time.
Cross-chain compatibility: With USDC and Circle’s cross-chain transfer protocol, the API can operate across multiple blockchains, offering flexibility to businesses.
Freelance marketplaces: Freelance platforms can use the API to manage milestone-based payments, enhancing trust and reducing disputes between clients and freelancers.
High-value e-commerce: In peer-to-peer transactions, escrow ensures that payment is only released once the product has been received and verified.
SaaS providers: Platforms managing recurring payments can leverage the API to release payments upon successful service delivery.
International real estate: Trustless Work helps secure funds in cross-border real estate transactions by releasing them only when all legal and contractual obligations are met.
Legal services: Law firms can manage complex multi-party agreements or settlements without needing manual escrow services.
In summary, the Trustless Work REST API provides a robust, transparent, and cost-effective solution for managing escrowed funds, catering to a wide range of industries and promoting security and trust in digital transactions.
The Funding Phase is where funds are deposited into the escrow smart contract, signaling the formal commitment of all parties to the transaction. This phase ensures the financial security of the agreement, builds trust among participants, and sets the stage for the remaining phases.
1. Depositing Funds
Anyone with a Stellar wallet and funds in the configured currency can deposit to the escrow smart contract.
The escrow contract address is the Escrow ID (Contract ID) generated during the Initiation Phase.
2. Escrow Contract Updates
Upon deposit, the escrow contract:
Updates the balance to reflect the deposited amount.
Emits a blockchain Deposit Event, notifying all participants of the successful funding.
3. Verification by Participants
All participants, including the Milestone Marker, Release Signer, and Platform Address, can independently verify the transaction using:
The transaction ID (e.g., tx123abc
) on the Stellar network and Stellar block explorer.
The Escrow Viewer provided by Trustless Work.
A direct request to the Trustless Work API using the Escrow ID.
Blockchain Transparency: All participants can independently verify the funding status using the transaction ID on-chain.
Stellar Integration Flexibility: Any Stellar Anchor (on/off-ramp) can be seamlessly integrated to fund the escrow, allowing for global accessibility and currency flexibility.
Escrow Balance Updates: Participants calculate funding status off-chain by comparing the balance with the agreed amount.
Platform's Role: The platform provides updates to participants.
Funds Held On-Chain:
The deposited amount is securely held in the escrow smart contract, ensuring safety and transparency.
Participant Verification:
All participants can verify the funding details using the on-chain transaction ID, building trust and confidence.
Trust Reinforced:
The client’s deposit demonstrates their commitment to the transaction, fostering trust with the service provider.
The Initiation Phase is the foundation of the escrow process. It ensures that all necessary details are captured, roles are assigned, and conditions are clearly defined. This phase lays the groundwork for a secure, transparent, and efficient transaction.
Participants and Roles
In the initiation phase key roles are assigned to specific parties. These roles determine responsibilities and actions throughout the transaction.
We are currently on the process of updating from client to milestone approver and from service provider to milestone marker. Receiver will be added too (For now, it assumes service rpovider will be the receiver)
The roles are:
Client/Milestone Approver: Approves or disputes milestones.
Service Provider / Milestone Marker: Marks milestones as completed and ready for approval.
Release Signer: Approves the release of funds for completed milestones.
Dispute Resolver: Resolves disputes and adjusts milestone statuses if necessary.
Receiver: The final recipient of funds once conditions are met.
Platform Address: An address designated to receive the platform fee.
Parties: Parties are entities (e.g., buyer, seller, platform) assigned to fulfill one or more roles based on the use case. You can learn more about how this can work for different use cases later on.
Other escrow properties configuredin this phase:
Engagement ID
Definition: A customizable identifier that links the escrow to an external system or reference, such as a UUID, Order ID, or Invoice ID.
Amount: The total funds to be held in escrow.
Platform Fee: A fixed or percentage-based fee for the platform’s services, in bps.
Milestones: Defined deliverables or outcomes that are tracked and verified throughout the process.
Trustline: The Contract address of the Token used for the escrow.
Step 1: Configuring Terms
Parties and Address are configured at a platform level. All parties agree on the transaction terms, including:
Deliverables or milestones.
Payment amounts and structure.
Roles and responsibilities.
Step 2: Recording Metadata
The platform records escrow details, assigns an Engagement ID for their own tracking, platform fee, platform address, trustline, and prepares to deploy the escrow contract.
Step 3: Initializing the Escrow
Using the Trustless Work API, the platform deploys the escrow contract with the configured terms.
Upon deployment:
A unique Escrow ID (Contract ID) is generated and returned to all parties for reference. Funds of the approved trustline can be deposited to the escrow ID.
Engagement ID: Order_12345
links the escrow to the platform's order system.
Escrow ID: Generated by the Soroban network as 0xABC123...
.
Roles Assigned:
Milestone Approver: Client.
Milestone Marker: Freelancer.
Release Signer: Upwork.
Dispute Resolver: Upwork.
Receiver: Freelancer.
Platform Address: Upwork (receiving platform fees).
Outcome: The escrow contract is initialized with:
Clear roles and responsibilities.
Transparent milestone and payment structures.
A shared understanding among all parties.
A smart escrow contract is successfully created and ready for the transaction.
Roles, parties, and conditions are clearly defined and documented.
Engagement and Escrow IDs provide traceability and clarity.
All participants have full visibility, fostering trust and reducing potential disputes.
Escrow ID (Contract ID)
The escrow ID is what we are going to use as address to deposit funds in the next phase. Anyone can send funds to an escrow, as long as it is the accepted token (Trustline is set).
Definition: A unique identifier automatically generated by the Soroban network when the escrow smart contract is deployed.
Purpose: Serves as the primary identifier for the escrow contract on the blockchain.
engagementId
string
The unique identifier linking this escrow to a specific project or transaction.
contractId
string
The unique identifier of the contract.
issuer
string | Address Wallet
The address of the party that created the escrow contract.
signer
string | Address Wallet
The address authorized to approve the release of funds.
serviceProvider
string | Address Wallet
The address of the entity receiving the payment.
amount
number | u128
The amount pacted (price of product/service).
balance
number | u128
The amount currently in the contract.
cancelled
boolean
If the escrow is already cancelled
completed
boolean
If the escrow is already completed
description
string
A brief summary or metadata describing the scope of the service/product.
Content-Type
application/json
string
The unique identifier linking this escrow to a specific project or transaction.
string
A brief summary or metadata describing the scope of the service/product.
string | Address
The address of the party that created the escrow contract.
string | Address
The address of the entity receiving the payment.
string
The amount pacted (price of product/service).
string | Address
The address authorized to approve the release of funds.
Responsible for modifying the "status" property of a specific milestone in the escrow
URL: /escrow/change-milestone-status
contractId: ID (address) that identifies the escrow contract
milestoneIndex: Position that identifies the milestone within the group of milestones in the escrow
newStatus: New value for the "status" property within the escrow milestone
serviceProvider: Address of the service provider who will modify the contract's "status" property
Handles the resolution of disputes within an escrow by transferring the amounts entered so far in the escrow to the client and service provider according to what the dispute resolver deems appropriate.
URL: /escrow/resolving-disputes
contractId: ID (address) that identifies the escrow contract
disputeResolver: Address of the user defined to resolve disputes in an escrow
clientFunds: Amount to transfer to the client for dispute resolution
serviceProviderFunds: Amount to transfer to the service provider for dispute resolution
A Comprehensive Developer's Guide to Stellar Wallet Integrations
Stellar wallets are essential tools for interacting with the Stellar blockchain, enabling developers and users to securely manage, send, and receive digital assets. This section covers the setup and integration of popular Stellar wallets:
Public Key: Your Stellar address
, used to receive assets. This can be shared publicly.
Private Key: Your secret key used to authorize transactions. This must be kept secure and never shared.
Never share your private key with anyone
Stellar accounts need to establish trustlines to receive custom assets. Trustlines represent a relationship between two accounts, where one account trusts the other to issue a specific asset. This allows the receiving account to accept and hold that asset.
Trustlines are crucial in Stellar for:
Establishing trust with asset issuers
Enabling receipt of custom tokens
Requiring a small minimum balance to create
Stellar accounts require a minimum balance (currently 0.5 XLM)
Each trustline adds to the minimum balance requirement
Helps prevent spam and ensures network stability
Use hardware wallets when possible
Enable two-factor authentication
Store private keys offline
Use secure, updated browsers
Regularly update wallet software
Be cautious of phishing sites
Testnet tokens are a great way to experiment with Stellar wallets and blockchain operations without risking real assets. This guide explains how to obtain testnet tokens, their purpose, and how to use them effectively.
Testnet tokens are virtual assets used on Stellar's test network (testnet) to:
Test wallet setups.
Experiment with sending and receiving payments.
Learn Stellar operations like creating trustlines or setting up smart contracts.
Risk-Free Learning: No monetary value; perfect for practice.
Development Testing: Test your applications or smart contracts before deploying on the mainnet.
Community Access: Many developers and testers rely on the testnet for Stellar experiments.
Go to the Stellar Laboratory: https://laboratory.stellar.org/#account-creator
Generate a Testnet Account:
Select the "Generate New Keypair" option.
Note down the Public Key and Secret Key (keep the Secret Key secure).
Fund the Account:
Copy the Public Key.
Scroll down to the "Create a test account and fund it" section.
Paste the Public Key and click "Create Account".
Confirm Test Tokens:
Go to a Stellar wallet (Freighter, Rabet, etc.).
Use your Secret Key to import the testnet account.
You’ll see 10,000 XLM test tokens credited.
Open the Stellar Testnet Faucet: https://faucet.testnet.stellar.org/
Enter Your Public Key:
Paste your Public Key into the faucet's input field.
Click "Request Lumens":
You’ll receive a transaction confirmation.
Check your wallet to confirm receipt of 10,000 XLM test tokens.
Install the Stellar CLI:
Install the stellar-core
or stellar-horizon
command-line tool (refer to Stellar documentation).
Request Tokens:
Run the following command:
Replace <Your Public Key>
with your Stellar wallet address.
Verify Balance:
Use the CLI or a Stellar wallet to check your testnet account balance.
Send tokens between test accounts.
Experiment with memo fields, transaction fees, and multi-signature setups.
Trustlines: Use testnet tokens to create trustlines for custom assets.
Asset Issuance: Test issuing and trading custom assets.
Smart Contracts: Experiment with Stellar's pre-signed transactions to simulate smart contracts.
Use your testnet wallet with Stellar-based dApps like Trustless Work to test integrations.
Most Stellar wallets allow you to switch between the mainnet and testnet. Here's how:
Open your wallet settings.
Look for the "Network" option.
Switch from Mainnet to Testnet.
Save your settings and restart the wallet if required.
Freighter Wallet:
Click on Settings > Network > Testnet.
Rabet Wallet:
Select "Network" in the main menu and toggle to Testnet.
Albedo Wallet:
Adjust the network via the settings or during the transaction prompt.
Testnet Tokens Have No Value:
These tokens are strictly for testing and cannot be transferred to the mainnet.
Testnet Environment Resets:
The Stellar testnet resets periodically, clearing all test accounts and balances.
Always re-create your accounts and re-fund them when the testnet resets.
Avoid Sharing Secret Keys:
Even in a test environment, keep your Secret Key secure to mimic best practices for the mainnet.
Ensure you’ve used the correct Public Key.
Try another method (e.g., Stellar Faucet vs. Laboratory).
Wait for a few minutes as the testnet might experience delays.
Make sure your wallet supports Stellar’s testnet.
Check for updates or consider using a wallet that supports testnet, like Freighter or Rabet.
Without the Secret Key, you cannot access your testnet account. Treat it as you would a real wallet key.
By following this guide, you can confidently explore Stellar’s testnet and test a variety of operations risk-free.
Unable to connect wallet to Trustless Work
Ensure your wallet extension is installed and active.
Verify you are on the correct network (Mainnet/Testnet).
Error: Insufficient Balance
Check if your wallet meets the Stellar minimum balance requirement.
Add more funds to your wallet.
How do I switch networks?
Use your wallet settings to toggle between Mainnet and Testnet.
Can I recover my wallet without the recovery phrase?
No. Always back up your recovery phrase securely.
Official logo of the Albedo Wallet.
Albedo is a web-based wallet for Stellar, offering simple and secure ways to sign Stellar transactions.
How to install and set up Albedo Wallet.
How to connect Albedo Wallet to Trustless Work.
Useful resources and FAQs.
Visit Albedo Wallet.
Click "Create Albedo Account" and follow the prompts.
Save your backup key securely.
Verify your account and log in.
Open Albedo Wallet.
Click on "Create Albedo Account" and follow the prompts.
Click on "Import Account".
Enter your existing Seed Phrase and set a password.
Navigate to the Trustless Work platform.
Example link: Trustless Work.
Click "Connect Wallet" in the top-right corner of the page.
Select "Albedo Wallet" from the list of options.
Authorize the connection on Albedo's interface.
Backup Your Seed Phrase: Store it in a secure, offline location.
Use Testnet for Development: When testing or experimenting, always switch to the Testnet to avoid losing real funds.
Enable Browser Security Features: Avoid installing unknown browser extensions that could compromise your wallet.
Official Website: Albedo
Documentation: Albedo Documentation
Testnet Tokens: How to Get Testnet Tokens
Troubleshooting: Troubleshooting & FAQs
Your recovery phrase is the only way to restore your wallet. If it’s lost, your funds cannot be recovered.
Official logo of the Freighter Wallet.
Freighter is a browser extension wallet for Stellar. It is a non-custodial wallet extension for your browser.
How to install and set up Freighter Wallet.
How to connect Freighter Wallet to Trustless Work.
Useful resources, security tips, and FAQs.
Open the official Freighter Wallet website.
Click on "Add to Browser" for your preferred browser (e.g., Chrome, Brave, or Firefox).
Ensure you download only from the official website to avoid scams.
Follow the browser prompts to install the extension.
After installation, pin the Freighter extension for easy access.
Open the Freighter extension by clicking on its icon in your browser.
Click on "Create New Wallet".
Set a secure password (store this password securely).
Freighter will generate a Recovery Phrase (also called a Seed Phrase).
Write it down and store it in a safe place. Do not share it with anyone.
Open the Freighter extension.
Click on "Import Wallet".
Enter your existing Seed Phrase and set a password.
Navigate to the Trustless Work platform.
Example link: Trustless Work.
Click "Connect Wallet" in the top-right corner of the page.
Select "Freighter Wallet" from the list of options.
A pop-up will appear from Freighter asking for confirmation.
Approve the connection in the wallet extension.
Ensure Freighter is set to the correct network (Testnet or Mainnet) based on your environment. You can toggle the network in the Freighter settings.
Backup Your Seed Phrase: Store it in a secure, offline location.
Use Testnet for Development: When testing or experimenting, always switch to the Testnet to avoid losing real funds.
Enable Browser Security Features: Avoid installing unknown browser extensions that could compromise your wallet.
Official Website: Freighter Wallet
Documentation: Freighter GitHub Repo
Testnet Tokens: How to Get Testnet Tokens
Troubleshooting: Troubleshooting & FAQs
Your recovery phrase is the only way to restore your wallet. If it’s lost, your funds cannot be recovered.
Open the Freighter extension.
Click on the settings icon.
Toggle between Testnet and Mainnet in the dropdown.
Set the required trustline.
POST
helper/set-trustline
Headers
Content-Type
application/json
Params
string
The key of the secret source.
Example of Request Body:
Possible Responses
Here you'll find the basic flow in order to use Trustless Work API.
Before you start:
A public and private address must be generated with this stellar resource:
Then stellar funds must be given to this address by placing the public key in this stellar resource:
USDC on testnet faucet Stellar testnet:
To be able to interact with USDC from a stellar address you have to define the trustline. For this you can use this api endpoint:
Normal case where a escrow is created and the escrow are completed correctly:
The escrow contract must be deployed, which in turn initializes the escrow with its metadata.
Among the information returned you will get the id of the contract you have just deployed, which you will need to enter to be able to use the other endpoints.
NOTE: This 50 percent that is being transferred goes directly to the balance of the deployed contract, not to the service provider. The escrow must then be funded so that the service provider can be assured of 50 percent of the escrow value.
To do this, the following endpoint must be executed:
The following endpoint must be executed in order to complete the escrow after mutual agreement:
With this step the other 50 percent of the escrow value will be transferred to the balance of the deployed contract.
After the escrow is completed, the service provider may claim the proceeds of the escrow through this endpoint:
Case in which the contract is deployed and the escrow is initialized and funded but the service provider decides to cancel the escrow:
The escrow contract must be deployed, which in turn initializes the escrow with its metadata.
Among the information returned you will get the id of the contract you have just deployed, which you will need to enter to be able to use the other endpoints.
NOTE: This 50 percent that is being transferred goes directly to the balance of the deployed contract, not to the service provider.
The escrow must then be funded so that the service provider can be assured of 50 percent of the escrow value.
Due to an external cause the service provider decided to cancel the escrow.
The escrow owner (signer) will be able to refund to his account the 50 percent that he financed for the escrow due to the above mentioned situation.
IMPORTANT NOTE: All endpoints related to escrow management return the transaction unsigned. This is done by means of a string returned in XDR (External Data Representation) format, which is a format that stellar uses to encode transactions. This string is what you should use to sign the transaction with the wallet of your choice. After being signed it will return the transaction signed in the same way by means of a string in XDR format.
This string is the one that must be sent to the next endpoint for the transaction to be sent to the Stellar network:
The only endpoints that do not require the previous step since they are signed and sent to the network directly when executed, are the following (mentioning them by the name they have in the documentation):
Invoke Deployer Contract
Get Escrow by Engagement ID
Set Trustline
A visual representation of our contracts: single-release
This is a visualization of how our escrow contracts currently look like:
Escrow ID: This is the same as the contract address, users will send funds to this Address. (Trustline should be set)
Roles: roles are assigned to parties, represented by Stellar public addresses. Depending on each party's role, they will be allowed to sign and update the escrow status and flags. Learn more about roles here
Escrow properties:
Balance: The amount of funds currently in the escrow (deposited to escrow id)
Platform Fee: Extra fee that is sent to platform Address.
Trustline: Trustline of the token to be deposited
Amount: The expected amount expected to be held in escrow (this is a numerical value configured on deployment, not the current balance on escrow).
Flags:
Disputed: Set to true when a party raises a dispute
Released: Set to true when the release transaction has been signed and funds have been released.
Milestones:
Title: Name of the milestone. Ex: Delivery of code
Description: A description of the milestone, can also include acceptance criteria.
Status: Pending (default) - Completed (when marked as complete)
We are also working on this type of escrow contract: multi-release
Main difference being that the amount and flags are moved to the milestone, therefore you can have independent fund releases per milestone. I will reference this type of contract in our docs too as it is currently being built.
The Dispute Resolution Phase is triggered when the client (e.g., Alice) raises a dispute during the Approval Phase. This phase involves a thorough review by the designated dispute resolver (e.g., the platform, Marketplace) to determine how the funds should be allocated. The escrow contract remains in a locked state, with no funds released, until the dispute is resolved.
Raising a Dispute:
The client (Alice) identifies issues with the milestone deliverable and raises a dispute.
Evidence or supporting documentation (e.g., screenshots, contracts, delivery notes) is submitted to the dispute resolver.
The escrow contract updates:
Milestone Status: Set to In Dispute.
Approved Flag: Updated to reflect the dispute status.
Dispute Resolver Review:
The dispute resolver (Marketplace) reviews the case, including:
Evidence provided by the client.
Responses or counter-evidence from the service provider (Bob).
The resolver makes a decision on fund allocation (e.g., full refund to client, partial payment to service provider).
Escrow Contract Updates:
Based on the resolver’s decision, the escrow contract is called for the release with:
Funds for Service Provider: Amount to be sent to service provider
Funds for Client: Amount to be sent back to the client
Sign and Release:
The resolver signs the resolution, releasing payment as set and setting the released flag to TRUE
Milestone Status:
In Dispute: Indicates the milestone is under review by the dispute resolver.
Resolver Decision:
Contains the final decision, including updated allocations of funds.
Updated Amounts:
Reflects any changes to the original escrowed amount based on the resolution.
Final Approval Flag:
Set to True
once the dispute is resolved, enabling the transition to the Release Phase.
Resolution Achieved:
Funds are allocated according to the dispute resolver’s decision, ensuring a fair outcome for both parties.
Escrow Prepared for Release:
The resolution is set, enabling the transaction to transition to the Release Phase.
Dispute Transparency Ensured:
All resolution details, including fund adjustments and final decisions, are recorded and visible to participants.
Official logo of the Hana Wallet.
Hana Wallet is a lightweight browser extension wallet for Stellar, offering an easy and secure way to manage accounts and sign transactions.
How to install and set up Hana Wallet.
How to connect Hana Wallet to Trustless Work.
Key resources and troubleshooting.
Visit the official Hana Wallet website.
Download and install the browser extension for your preferred browser (Chrome or Brave).
Pin the Hana extension for quick access.
Open the Hana extension by clicking on its icon in your browser.
Click on "Create Wallet".
Set a secure password (store this password securely).
Hana will generate a Recovery Phrase (also called a Seed Phrase).
Write it down and store it in a safe place. Do not share it with anyone.
Open the Hana extension.
Click on "Import Wallet".
Enter your existing Seed Phrase and set a password.
Navigate to the Trustless Work platform.
Example link: Trustless Work.
Click "Connect Wallet" in the top-right corner of the page.
Select "Hana Wallet" from the list of options.
A pop-up will appear from Hana asking for confirmation.
Approve the connection in the wallet extension.
Ensure Hana is set to the correct network (Testnet or Mainnet) based on your environment. You can toggle the network in the Hana settings.
Backup Your Seed Phrase: Store it in a secure, offline location.
Use Testnet for Development: When testing or experimenting, always switch to the Testnet to avoid losing real funds.
Enable Browser Security Features: Avoid installing unknown browser extensions that could compromise your wallet.
Hana Official Website: Hana Wallet
FAQs and Support: Hana Support
Testnet Tokens: How to Get Testnet Tokens
Troubleshooting: Troubleshooting & FAQs
Your recovery phrase is the only way to restore your wallet. If it’s lost, your funds cannot be recovered.
Open the Hana extension.
Click on the settings icon.
Toggle between Testnet and Mainnet in the dropdown.
Official logo of the xBull Wallet.
xBull Wallet is a secure and fast web-based wallet designed for Stellar users. It provides a seamless experience for managing Stellar accounts and interacting with Stellar dApps.
How to install and set up xBull Wallet.
How to connect xBull Wallet to Trustless Work.
Useful resources, tips, and troubleshooting.
Visit the official xBull Wallet website.
Click "Download Wallet" and then install for your preferred browser (e.g., Chrome, Brave, or Firefox).
Ensure you download only from the official website to avoid scams.
After installation, pin the xBull extension for easy access.
Open the xBull extension by clicking on its icon in your browser.
Click on "Generate Wallet".
Set a secure password (store this password securely).
xBull will generate a Recovery Phrase (also called a Seed Phrase).
Write it down and store it in a safe place. Do not share it with anyone.
Open the xBull extension.
Click on "Import Wallet".
Enter your existing Seed Phrase and set a password.
Navigate to the Trustless Work platform.
Example link: Trustless Work.
Click "Connect Wallet" in the top-right corner of the page.
Select "xBull Wallet" from the list of options.
A pop-up will appear from xBull asking for confirmation.
Approve the connection in the wallet extension.
Ensure xBull is set to the correct network (Testnet or Mainnet) based on your environment. You can toggle the network in the xBull settings.
Backup Your Seed Phrase: Store it in a secure, offline location.
Use Testnet for Development: When testing or experimenting, always switch to the Testnet to avoid losing real funds.
Enable Browser Security Features: Avoid installing unknown browser extensions that could compromise your wallet.
xBull Official Website: xBull Wallet
xBull Documentation: xBull Docs
Testnet Tokens: How to Get Testnet Tokens
Troubleshooting: Troubleshooting & FAQs
Your recovery phrase is the only way to restore your wallet. If it’s lost, your funds cannot be recovered.
Open the xBull extension.
Click on the settings icon.
Toggle between Testnet and Mainnet in the dropdown.
Official logo of the Lobstr Wallet.
Lobstr Wallet is a user-friendly mobile and web wallet for managing Stellar accounts. It supports advanced features like multisignature accounts and Stellar-powered services.
How to install and set up Lobstr Wallet.
How to connect Lobstr Wallet to Trustless Work.
Key resources, tips, and support.
Download the Lobstr Wallet app from the App Store or Google Play Store.
Open the app and follow the instructions to create a new wallet.
Save your Recovery Phrase securely.
Set a PIN or biometric authentication for added security.
Visit the Lobstr Wallet website.
Sign up for an account or log in if you already have one.
Follow the prompts to secure your wallet.
Navigate to the Trustless Work platform.
Example link: Trustless Work.
Click "Connect Wallet" in the top-right corner of the page.
Select "Lobstr Wallet" from the list of options.
A pop-up will appear from Lobstr asking for confirmation.
Approve the connection in the wallet extension.
Backup Your Seed Phrase: Store it in a secure, offline location.
Use Testnet for Development: When testing or experimenting, always switch to the Testnet to avoid losing real funds.
Enable Browser Security Features: Avoid installing unknown browser extensions that could compromise your wallet.
Lobstr Official Website: Lobstr Wallet
Testnet Tokens: How to Get Testnet Tokens
Troubleshooting: Troubleshooting & FAQs
FAQs and Support: Lobstr FAQ
Your recovery phrase is the only way to restore your wallet. If it’s lost, your funds cannot be recovered.
Official logo of the Rabet Wallet.
Rabet Wallet is a browser extension and desktop wallet that simplifies Stellar account management and enables interactions with Stellar dApps.
How to install and set up Rabet Wallet.
How to connect Rabet Wallet to Trustless Work.
Key resources and troubleshooting tips.
Download the Rabet Mobile App:
For iOS Users: Go to the App Store.
For Android Users: Go to the Google Play Store.
Install the App:
Search for "Rabet Wallet" in your app store.
Tap the "Install" button and wait for the app to download.
Create a Wallet:
Open the app and select "Create Wallet".
Follow the instructions to generate a new wallet.
Securely save the Seed Phrase displayed during setup. This is critical for wallet recovery.
Download Rabet for Your Operating System:
Visit the Rabet Wallet website.
Go to the "Download" section.
Select the version for your operating system:
Windows: Download the .exe
file.
macOS: Download the .dmg
file.
Linux: Download the .AppImage
file.
Install Rabet:
Windows: Run the .exe
file, follow the installation wizard, and launch Rabet.
macOS: Open the .dmg
file and drag Rabet into the Applications folder.
Linux: Make the .AppImage
file executable by running:
Then execute the file:
Create or Import Wallet:
Launch the Rabet desktop application.
Choose "Create Wallet" to generate a new wallet or "Import Wallet" to restore an existing wallet using your Seed Phrase.
Secure Your Wallet:
Set a strong password to protect access to your wallet.
Google Chrome
Brave
Firefox
Visit the Official Rabet Extension Page:
For Google Chrome and Brave: Go to the Chrome Web Store.
For Firefox: Visit the Firefox Add-ons page.
Click on "Add to Browser" for your preferred browser (e.g., Chrome, Brave, or Firefox).
Ensure you download only from the official website to avoid scams.
Follow the browser prompts to install the extension.
After installation, pin the Hana extension for easy access.
Navigate to the Trustless Work platform.
Example link: Trustless Work.
Click "Connect Wallet" in the top-right corner of the page.
Select "Rabet Wallet" from the list of options.
A pop-up will appear from Rabet asking for confirmation.
Approve the connection in the wallet extension.
Backup Your Seed Phrase: Store it in a secure, offline location.
Use Testnet for Development: When testing or experimenting, always switch to the Testnet to avoid losing real funds.
Enable Browser Security Features: Avoid installing unknown browser extensions that could compromise your wallet.
Official Website: Rabet Wallet
Testnet Tokens: How to Get Testnet Tokens
Troubleshooting: Troubleshooting & FAQs
Your recovery phrase is the only way to restore your wallet. If it’s lost, your funds cannot be recovered.
Open the Rabet extension.
Click on the settings icon.
Toggle between Testnet and Mainnet in the dropdown.
Allows users to deposit funds into an existing escrow contract, securing them until the agreed conditions are met.
Allows flexible USDC amounts to be transferred to the escrow contract.
URL: /escrow/fund-escrow
contractId: ID (address) that identifies the escrow contract
signer: Address of the user signing the contract transaction
amount: Amount to transfer to the escrow contract
Previous Version:
POST
escrow/fund-escrow
Headers
Body
Example of Request Body:
Possible Responses
Only Signer
Already Funded
Fully Funded
Insufficient Founds
Not Found
Not Enough Allowance
What this Endpoint returns?
This endpoint returns the transaction unsigned so that the transaction can be signed by means of a customer wallet.
Confirm the transaction.
POST
helper/send-transaction
Headers
Body
Example of Request Body:
Possible Responses
Responsible for modifying the "flag" property of a specific milestone in the escrow to approve that milestone.
URL: /escrow/change-milestone-flag
contractId: ID (address) that identifies the escrow contract
milestoneIndex: Position that identifies the milestone within the group of milestones in the escrow
newFlag: New value for the "flag" property within the escrow milestone
client: Address of the client who will approve the milestone
The escrow has been successful completed.
Distributes escrow earnings after the escrow is marked as complete.
URL: /escrow/distribute-escrow-earnings
contractId: ID (address) that identifies the escrow contract
releaseSigner: Address of the user defined to release the funds
This was previously called complete escrow:
POST
escrow/complete-escrow
Headers
Body
Example of Request Body:
Possible Responses
Only Signer
Not Funded
Already Completed
Not Found
Insufficient Founds
What this Endpoint returns?
This endpoint returns the transaction unsigned so that the transaction can be signed by means of a customer wallet.
Content-Type
application/json
string
The unique identifier linking this escrow to a specific project or transaction.
string
The unique identifier of the contract.
string | Address
The address authorized to approve the release of funds.
string
The unique identifier linking this escrow to a specific project or transaction.
string | Address
The address authorized to approve the release of funds.
string
The unique identifier of the contract.
Content-Type
application/json
string
The sign's hash. This come from the wallet.
Content-Type
application/json