Inicia el escrow

Implementa el contrato de escrow y define sus propieades.

POST deployer/invoke-deployer-contract

Encabezado

Nombre
Valor

Content-Type

application/json

Authorization

Bearer <token>

Parámetros del cuerpo:

Nombre
Tipo
Descripción

signer

string

Entidad que firma la transacción que implementa e inicia el escrow.

engagementId

string

ID que el usuario quien creó el escrow utiliza para identificarlo.

title

string

Nombre del escrow.

description

string

Texto que describe la función del escrow.

approver

string

Dirección de la entidad que requiere el servicio.

serviceProvider

string

Dirección de la entidad que provee el servicio.

platformAddress

string

Dirección de la plataforma propietaria del escrow.

amount

string

Cantidad a transferir al completarse los hitos del escrow.

plataformFee

string

Comisión que la plataforma recibirá cuando el escrow se complete.

milestones

Milestones<Array>

Objetivos a completar en el escrow para que este llegue a marcarse como completo.

disputeResolver

string

Dirección a cargo de resolver disputas en el escrow.

releaseSigner

string

Dirección del usuario a cargo de liberar los fondos del escrow al proveedor de servicios.

trustline

string

Dirección del token que administrará los movimientos de USDC.

trustlineDecimals

number

Número de dígitos decimales que determinan la divisibilidad de la unidad base del token (trustline).

receiver

string

Dirección del usuario a quien los fondos están destinados.

receiverMemo (Optional)

number

Campo usado para identificar la dirección del receptor en trasacciónes a través de una cuenta intermediaria. Este valor está incluido como un memo en la transacción y permite que los fondos sean encaminados correctamente a la wallet del receptor especificado.

Milestone (Hito)

Nombre
Tipo
Descripción

description

string

Texto que describe la función del hito.

status

string

Estado del hito. Por ejemplo: Approved (aprobado), In dispute (en disputa), etc.

approved_flag

boolean

Flag que indica si un hito ha sido aprobado por el aprobador.

Ejemplo:

{
	signer: "GAD4T6Z63N5NJLQYY3J5MVYFHH5I5UB7NDUUYZD7HHB3RMS6X3H4YK7P", 
	engagementId: "ENG12345",
	title: "Project Title",
	description: "This is a detailed description of the project.",
	approver: "GAHJZHVKFLATA7RVGXSFKXAKT5H4RXJ4LU2UR2W2IDFXOJQ2BR7RHW62",
	serviceProvider: "GDWPCWWH7IXQJHDF7FJUI7VOGD5IT72T7YX55F4BR2H4WXFRBVMBK6A3", 
	platformAddress: "GBC5DVYUBTBSXJ3ZMRPGXDDDLKTALIFGRW73B33AF5EFSZBUECKSFO4R",
	amount: "1000.00",
	platformFee: "50.00", 
	milestones: [
		{ description: "Initial phase of the project", status: "Pending", approved_flag: false },
		{ description: "Completion of design work", status: "Pending", approved_flag: false }
	],
	releaseSigner: "GBDKXCG6FHJMTUBWGAVVOD5PB5QXLYTRJGCH4NR4IMJVPXHHTBBXPY3V",
	disputeResolver: "GDJVCNR5GPOJH7XMOVMHBKZV7V7WQ3B7QK75C76HLOBD4AKHFG5OCARJ"
};

Respuestas Posibles

{
    "status": "SUCCESS",
    "unsignedTransaction": "AAAAAgAAAABfQAm/gS..."  // XDR Hash Transaction
}

Ejemplo de uso (con axios):

import axios from "axios";

const http = axios.create({
  baseURL: "https://dev.api.trustlesswork.com",
  timeout: 10000,
  headers: {
    "Content-Type": "application/json",
    Authorization: `Bearer your_api_key`,
  },
});

export const useExample = async () => {
    // Get the signer address
    const { address } = await kit.getAddress();

    // Execute the endpoint
    const response = await http.post(
      "/deployer/invoke-deployer-contract",
      {
        // body requested for the endpoint
      },
    );
    
    // Get the unsigned transaction hash
    const { unsignedTransaction } = response.data;

    // Sign the transaction by wallet
    const { signedTxXdr } = await signTransaction(unsignedTransaction, {
      address,
      networkPassphrase: WalletNetwork.TESTNET,
    });

    // Send the transaction to Stellar Network
    const tx = await http.post("/helper/send-transaction", {
      signedXdr: signedTxXdr,
      returnValueIsRequired: true,
    });

    const { data } = tx;

    return data; 
}

Last updated

Was this helpful?