Un área del desarrollo de Smart Contract que me ha intrigado de sobremanera es su uso en el mundo real para desintermediar al intermediario. Hay una joya de Smart Contract que logra esto, en la documentación de Solidity, llamada Compra a distancia segura.
Este es el primer post de dos donde documentaré cómo ejecutar la Compra a distancia segura usando una combinación de Remix y MetaMask.
Esta serie será particularmente útil para la gente que:
- Quiere saber qué es un Smart Contract.
- Desea codificar Smart Contact pero no desea pasar por la molestia de ejecutar Geth ni sincronizar con la Blockchain.
En este blog, describiré cómo funciona la Compra a distancia segura y discutiré el mecanismo que hace imposible hacer trampas.
El negocio de los servicios Escrow
Mi otro pasatiempo son los relojes. A menudo compro mis relojes en Internet, los uso durante unos meses, me aburro y trato de venderlos para comprar otro. Se convierte en un desafío hacer esto si no llego a tener un trato cara a cara porque no confío en el comprador y el comprador no confía en mí. El comprador puede tomar mi reloj y no pagarme. Por esta razón, existen servicios de Agentes Escrow (o Agentes de Custodia) como Chrono24 (especializado en custodias de compra-venta de relojes). Chrono24 toma el dinero del comprador, lo guarda y sólo lo entrega al vendedor cuando el comprador confirma que ha recibido y aceptado el reloj. Por este servicio, Chrono24 cobra una comisión del 4,5% sobre el precio de cotización del reloj.
Muchos ejemplos similares de servicios de Escrow como este existen. La bolsa y los bancos son otros ejemplos.
Ahora imagine si un servicio de Custodia es reemplazado por un Contrato Inteligente en la Cadena de Bloques Ethereum. Compra a distancia segura hace precisamente esto.
Lógica de compra a distancia segura:
Preguntas sobre la Compra Segura a Distancia:
- ¿Cuál es la importancia de iniciar el Smart Contract?
El vendedor necesitará apostar 2x del valor de lo que está vendiendo.
- ¿Cuál es la importancia de confirmar una compra?
El comprador necesitará apostar 2x del valor de lo que está comprando.
- ¿Cuál es la importancia de confirmar la entrega?
Tanto comprador como vendedor recibirán del Smart Contract el valor correspondiente y exacto de la operación, el comprador recibe la mitad del valor apostado inicialmente y el vendedor 1,5x veces su valor apostado.
En el caso del ejemplo gráfico anterior
- ¿Peter está vendiendo? ¿Por qué debe que apostar 2x por valor en ETH del importe del su artículo al Smart Contract?
Al apostar 2 veces el valor de su artículo al Smart Contract, Peter se compromete a entregar su artículo a John. Si no, pierde el doble del valor de su artículo.
- ¿Por qué Peter no puede simplemente apostar 1ETH, que es el valor del artículo?
Si Peter apuesta sólo 1ETH, su apuesta es menor que la de John, que es 2ETH. Si no le entrega su artículo a John, pierde 1ETH mientras que John pierde 2ETH.
- ¿Por qué John debe apostar el doble del valor del su artículo que está comprando?
Imagínese si John apuesta sólo 1ETH, Peter envía el artículo, y John se niega a confirmar la entrega. Peter perderá 2ETH y John no pierde nada!! (1ETH que costaba realmente el artículo que adquirió)
- Entonces, ¿por qué no dejar que tanto John como Peter apuesten sólo 1ETH cada uno?
Si John recibe el articulo y no confirma la recepción, no pierde nada (tan sólo 1ETH apostado), mientras que Peter pierde no sólo 1ETH, sino también su artículo. Si Peter por el contrario no realiza el envio del artículo, John perderá 1ETH y aunque Peter se queda con el artículo, este último tambien perderá 1ETH.
La importancia de hacer que tanto el vendedor como el comprador apuesten 2x de valor en ETH del importe del artículo motiva a ambas partes llevar a cabo el proceso completo de la transacción, desde el inicio hasta la confirmación de la entrega.
Esto provoca que el Contrato Inteligente devuelva 1ETH a John y 3ETH a Peter. La confirmación de la entrega concluye la transacción.
Esto ilustra la belleza de un contrato inteligente bien diseñado, que, en este caso, garantiza la equidad tanto para el comprador como para el vendedor.
Cuestiones a parte
- ¿Es posible que Smart Contract mienta y no devuelva ETHs a John y/o Peter?
Los códigos de Smart Contract se pueden verificar y demostrar en Etherscan.io. Ejecuta sólo en lo que confías.
- ¿Qué pasa cuando si el artículo cuesta 1.43546ETH, me refiero, qué pasa si no produce un número entero cuando se divide por 2?
Entonces pierdes ETH debido al redondeo. Como ejemplo, es un código bastante bueno para conocer el potencial de los contratos inteligentes. En un entorno de la vida real, definitivamente requiere más trabajo.
Fuente: Medium.com