Skip to content

frentuka/RustaceoLibre

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Trabajo práctico final de la materia Seminario de Lenguajes: Rust.

Rustaceo Libre: Estructura

Rustaceo Libre es un marketplace «al estilo Mercado Libre» desarrollado en Ink!

Despliegue del contrato (2025-07-17): aaUgbgCYnjHr6MVU2rNNnrp37zLM5jyZmpkUeXr48Zrvccx

Esta es una descripción de la estructura del sistema, implementando todo lo solicitado por el enunciado y agregando o reimaginando algunas funcionalidades

Usuario

Un usuario puede ser tanto vendedor como comprador o ambos a la vez. Puede registrarse como comprador o vendedor y posteriormente ascender su rol para ser ambos.

Las funcionalidades relacionadas a la compra y manejo de pedidos como comprador están reservadas para usuarios que se hayan registrado como compradores y lo mismo sucede para los vendedores: sólo ellos pueden registrar productos, listar publicaciones o administrar su stock.

A partir de ahora se referirá como "compradores" a los usuarios que se hayan registrado como comprador o ambos y como "vendedores" a quienes se hayan registrado como vendedor o ambos.

Calificaciones

Tanto los compradores como los vendedores tienen una calificación brindada por sus contrapartes en sus pedidos realizados. Si un usuario está registrado como comprador y vendedor a la vez, tendrá dos calificaciones: una como comprador y otra como vendedor.

Las calificaciones de otros usuarios son públicas para todo aquel que esté registrado en el marketplace.

Productos

Los vendedores serán capaces de hacer uso de la funcionalidad de registro de productos y hacer ingresos y retiros de stock de productos al Marketplace.

Todos los vendedores pueden utilizar todos los productos siempre que hayan ingresado stock del mismo, indiferentemente de quién haya registrado la información de ese producto en el Marketplace.

La totalidad de los usuarios registrados pueden ver la información de un producto si conocen la ID del mismo.

Publicación

Cuando un vendedor realiza una publicación, este debe brindar información como la ID del producto, la cantidad a ofertar y el precio unitario.

Cuando el vendedor asigna cantidad a ofertar a una publicación, esta cantidad se descuenta del stock personal del vendedor. El vendedor puede, posterior a crear la publicación, administrar el stock de la misma asignando siempre desde su stock personal. No podrá asignar stock si no cuenta con la cantidad suficiente en su inventario personal para hacerlo ni podrá retirar stock de la publicación si esta no tiene la cantidad suficiente para hacerlo.

Los compradores pueden acceder a la información de cualquier publicación si conocen su ID o al listado de publicaciones de cualquier vendedor si conocen la ID del mismo.

Pedido

Los compradores pueden realizar pedidos a una publicación siempre en cuanto la misma tenga el stock suficiente para realizar el pedido y el comprador haya transferido los fondos suficientes para realizar la misma.

Si el comprador no transifirió los fondos suficientes de la publicación la operación no será exitosa y se le devolverán los fondos. Si transfirió de más, se le devolverá la cantidad sobrante. Este Marketplace no cobra impuestos de ningún tipo.

Al concretarse una venta, ya sea porque el comprador la recibió o porque el vendedor hizo uso de la política de reclamo de fondos, se descontará (si existe) una tarifa de servicio que puede indicarse al momento de desplegar el contrato. Por defecto, esta tarifa es 0%.

Los vendedores no reciben el dinero inmediatamente luego de la creación del pedido, el mismo queda almacenado en la cuenta del contrato hasta que el pedido se considere finalizado.

Estados de un pedido

  • Pendiente: Es el estado por defecto de cualquier pedido luego de su exitosa creación. Significa que el pedido está pendiente de despacharse por parte del vendedor y solo él puede marcar el pedido como despachado. El comprador puede cancelar un pedido de forma unánime si éste no fue despachado 14 días después de su creación, a esto se le llama política de cancelación unánime.
  • Despachado: El vendedor marcó el pedido como despachado y depende de que el usuario lo marque como recibido. El comprador tiene 60 dias para hacer esto. En caso contrario, el vendedor podría ejecutar la Cláusula de Reclamo de Fondos del pedido, lo cual le enviará la totalidad de los fondos del pedido al vendedor.
  • Recibido: El comprador marcó este pedido como recibido y la operación se considera finalizada. Ya no puede sufrir cambios y la totalidad de los fondos involucrados se transfirieron al vendedor.
  • Cancelado: La cancelación de un pedido que no cumple con la política de cancelación unánime requiere de que ambas partes (comprador y vendedor) presten voluntad para hacerlo. No puede cancelarse un pedido ya cancelado o recibido. En caso de cancelarse un pedido, todos los fondos involucrados se transfieren al comprador y la operación se considera finalizada.

Calificación de un pedido

Una vez que un pedido se considera finalizado, ya sea por haber sido recibido o cancelado, ambas partes pueden calificarse mutuamente: el comprador al vendedor y viceversa.

El usuario solo puede prestar una calificación por pedido.

Setup infalible

En caso de que no pueda hacer un setup limpio del entorno, hemos encontrado la forma infalible de conseguir un entorno compatible.

Primero lo primero, deshacerse de Rust:

  rustup self uninstall

Seguido de volver a instalarlo desde la página oficial: https://rustup.rs

Instalar toolchain nightly-2024-06-20:

  rustup component add rust-src --toolchain nightly-2024-06-20

y Cargo Contract:

  cargo install cargo-contract --version 4.1.3

Si se desea utilizar Cargo Tarpaulin, la versión que recomendamos instalar es la 0.29.0, con el comando:

  cargo install cargo-tarpaulin --version 0.29.0 --locked

Autores

About

Marketplace decentralizado tipo MercadoLibre

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages