TON Blockchain

Escrow Smart Contract

El cliente y el proveedor depositan el dinero en un smart contract. El proveedor cobra cuando el trabajo está hecho y ambas partes están de acuerdo.

Cómo funciona

Cinco pasos hasta el contrato

Cree un smart contract con un asistente sencillo.

  1. Paso 1Rol en el contratoElija su rol en el contrato. Solo hay dos roles: cliente y proveedor. No hay arbitraje de terceros.
    9:41LTE

    Rol en el contrato

    Rol en el contrato

    El cliente es quien encarga el servicio o el producto. Paga el 100% por adelantado, más un depósito reembolsable opcional de hasta el 30%.

    El proveedor es quien suministra el servicio o el producto. Aporta un depósito reembolsable (por defecto, el 30% del monto del contrato).

  2. Paso 2Elección de monedaElija la moneda del contrato. GRAM, la moneda nativa de TON, sirve para tratos rápidos y pequeños, ya que es bastante volátil. USDT es una moneda más estable para tratos grandes y largos.
    9:41LTE

    Elección de moneda

    Moneda del contrato

    GRAM: creación más rápida. Puede crear el contrato y depositar los fondos en una sola transacción.

    USDT: creación en dos pasos. Primero se crea el contrato (su billetera debe tener la moneda nativa GRAM o admitir transacciones sin gas; es preferible GRAM) y luego se deposita USDT.USDT es menos volátil que GRAM.

  3. Paso 3Monto del contratoIngrese el monto del contrato en la moneda elegida. Este monto se transferirá al proveedor una vez realizado el trabajo.
    9:41LTE

    Monto del contrato

    GRAM

    El monto del contrato es el precio del trabajo. Lo deposita el cliente.

    30%

    Del 10% al 90%. Por defecto: 30%.

    0,4%

    0,4% del monto, pero no más de 15 GRAM.

  4. Paso 4Direcciones de billeteraPegue las direcciones de billetera. Más adelante, estas billeteras se usarán para depositar y retirar fondos.
    9:41LTE

    Direcciones de billetera

  5. Paso 5Revisión del contratoRevise los datos del contrato antes del despliegue.
    9:41LTE

    Revisión del contrato

    Condiciones del contrato
    Moneda
    GRAM
    Monto del contrato
    1 000 GRAM
    Depósito del proveedor
    300 GRAM · 30%
    Comisión del servicio
    4 GRAM · 0,4%

Después de crearlo

Tarjeta del contrato

Usted es el cliente y la moneda es USDT. Seis capturas de la misma tarjeta que en el panel real, con todas las acciones posibles en cada paso.

  1. Esperando depósitos
    1 000 USDT
    Contrato del 21.09.2026 - EQDe…0001
    Cliente (usted)
    0 / 1 000
    Proveedor
    0 / 300

    *Más un depósito reembolsable de hasta el 30%

    USDT

    Recién creado

    Los saldos están en cero. Puede depositar el monto del contrato, el monto con un adicional de hasta el 30% o eliminar el contrato mientras nadie haya depositado nada.

  2. Esperando depósitos
    1 000 USDT
    Contrato del 21.09.2026 - EQDe…0001
    Cliente (usted)
    1 000 / 1 000
    Proveedor
    0 / 300

    *Más un depósito reembolsable de hasta el 30%

    USDT

    Recargado, en espera

    El monto del contrato ya está en el contrato, pero aún falta el depósito del proveedor. Mientras el estado no sea «Activo», puede retirar su dinero. Todavía puede agregar el depósito adicional de hasta el 30%.

  3. Activo
    1 000 USDT
    Contrato del 21.09.2026 - EQDe…0001
    Cliente (usted)
    1 000 / 1 000
    Proveedor
    300 / 300
    USDT

    El proveedor debe aceptar. El monto se redondeará a un porcentaje entero del monto del contrato.

    *Más un depósito reembolsable de hasta el 30%

    USDT

    El proveedor recargó

    Ambos montos acordados ya están: el contrato está activo. Los fondos están bloqueados y no se puede retirar USDT. Puede aceptar el trabajo, proponer otra parte o agregar el depósito adicional (garantía extra del cliente).

  4. Activo
    1 000 USDT
    Contrato del 21.09.2026 - EQDe…0001
    Cliente (usted)
    1 200 / 1 000 + 200 · 20%
    Proveedor
    300 / 300
    USDT

    El proveedor debe aceptar. El monto se redondeará a un porcentaje entero del monto del contrato.

    *Más un depósito reembolsable de hasta el 30%

    USDT

    Se agregó un depósito del 20%

    Hay +200 USDT por encima del monto del contrato. Faltan 100 USDT para el tope del 30%. El retiro sigue cerrado: un contrato activo retiene el monto del contrato más el depósito adicional.

  5. Pago propuesto 800 USDT
    1 000 USDT
    Contrato del 21.09.2026 - EQDe…0001
    Cliente (usted)
    1 200 / 1 000 + 200 · 20%
    Proveedor
    300 / 300
    USDT

    Ahora se proponen 800 USDT · 80%. Puede reemplazarlo.

    *Más un depósito reembolsable de hasta el 30%

    USDT

    Se propuso el 80% al proveedor.

    El proveedor recibirá 800 USDT si acepta. El botón «Aceptar el trabajo» desapareció; solo volverá a aparecer si fija el 100%. La propuesta se puede reemplazar y el depósito adicional se puede seguir aumentando.

  6. Completado 800 USDT
    1 000 USDT
    Contrato del 21.09.2026 - EQDe…0001
    Cliente (usted)
    400
    Proveedor
    1 096

    El proveedor aceptó

    Contrato completado: 800 USDT fueron al proveedor y 4 USDT son las regalías del servicio. A usted le quedan 400 USDT, que puede retirar.

Q&A

Preguntas frecuentes

¿Dónde está el tercero?

No la hay. El proveedor arriesga su depósito, así que le conviene terminar el trabajo.

Por defecto, el depósito del proveedor es el 30% del monto del trato. Puede parecer que tiene ventaja: él arriesga el 30% y usted el 100%. Pero lo que importa no son los porcentajes, sino el dinero. Ese 30% es su propio dinero, y perderlo puede dolerle tanto como a usted perder su 100%. Nadie sacrifica su dinero porque sí.

Otro riesgo: el cliente recibe el trabajo y podría no pagar. Hay dos opciones. La primera: cuando el trabajo esté casi listo, proponer liquidar por adelantado. La segunda: pedir al cliente un depósito adicional de hasta el 30% sobre el monto. Al cerrarse el contrato, el cliente recupera ese depósito, así que tiene motivos para cerrar el trato.

¿Por qué debería confiar en ustedes?

No hace falta confiar. El smart contract es público. La dirección de su contrato es un hash de los datos iniciales y del código. Si alguien cambiara el código, la dirección sería otra.

Puede abrirlo y revisarlo (por ejemplo, en Tonviewer). Lo único es que hay que entender el código: ahí está el problema principal. Pero, a cambio, es una prueba al 100%. También puede darle el código a un modelo de IA. Abajo está el código del contrato con la explicación más sencilla posible.

ContractUSDT

Esta es la lista de importaciones: constantes y funciones auxiliares.

Breve descripción del contrato.

Lista de acciones disponibles con el contrato.

Función auxiliar: indica si el contrato está activo. Cuando todos han depositado sus montos, el contrato se activa y ya no se puede retirar el dinero sin más.

Función para el cambio. Cada mensaje lleva un poco de GRAM para procesar la transacción. Lo que sobra, esta función lo devuelve.

Calcula la dirección de la billetera de jettons. Depende de la dirección del contrato.

Si una transferencia falla, el dinero regresa y el contrato corrige sus registros de cuánto tiene cada uno.

Si el cuerpo del mensaje está vacío, no hacemos nada.

A continuación, la declaración de variables.

Recarga de USDT: acepta transferencias y registra cuántos USDT tiene cada parte.

Cambia el porcentaje del pago. Si el trabajo solo está hecho a medias, puede proponer el 50%. Si el proveedor acepta, el contrato se cumple. Si no, sigan negociando.

Si el proveedor acepta, el contrato le paga su parte más su depósito, y el resto vuelve a usted. Con 0% se cancela todo el trato y cada uno recupera su dinero. En ese caso, la comisión del 0,4% no se cobra.

El bloque más grande: gestiona las devoluciones de fondos.

Modo de error. Si se pierde una billetera o el dinero llegó sin quedar registrado, una parte puede ceder el control a la otra. En rigor, que el dinero llegue sin registrarse es imposible, salvo que se haga a propósito. Pero la opción se queda por si acaso. Olvidar o perder una billetera, en cambio, es bastante posible.

ErrRefund: retiro de emergencia de jettons que llegaron sin notificación y no quedaron registrados. También sirve cuando se pierde una billetera (más exactamente, su contraseña).

Burn: destruye el contrato para que no quede una carcasa vacía en la red. Puede quemarlo quien lo creó (el cliente o el proveedor) o el administrador, y solo cuando los saldos del cliente y del proveedor son cero.

Código fuente verificado de los tres contratos. El hash del código coincide con el que está en la red. Cada enlace abre el código en TON Verifier.

ContractMinterContractUSDTContractTON