

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.
Cree un smart contract con un asistente sencillo.
- 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
- 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
- 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
El monto del contrato es el precio del trabajo. Lo deposita el cliente.
Del 10% al 90%. Por defecto: 30%.
0,4% del monto, pero no más de 15 GRAM.
- 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
- Paso 5Revisión del contratoRevise los datos del contrato antes del despliegue.9:41LTE
Revisión del contrato
Rol en el contrato
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.
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.
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%.
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).
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.
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.
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