***Actualización Este contrato fue creado para la certificación Near Certified Development de Open Web Academy, en la primera y tercera edición del año 2024. El objetivo de este contrato era permitir las donaciones a cuentas específicas, pensando inicialmente para que los fanáticos donen $NEAR a artistas. Con esta actualización se modifica el contrato inteligente y el modelo para permitir crear proyectos y donar a ellos, pensado para que los artistas puedan crearlos y recibir financiamiento para realizarlos.
El frontend de este proyecto solo contempla el la versión inicial la fue creada en la certificación de BOS (Blockchain Operating System).
- Manejo de vectores para almacenar y gestionar las donaciones realizadas por los usuarios.
- Uso de funciones de llamada (call) para permitir a los usuarios realizar donaciones, crear proyectos y fondearlos.
- Uso de funciones de consulta (view) consultar para ver todas las donaciones hechas, las donaciones hechas a un artista, ver todos los proyectos, los proyectos de un artista
- Uso de la función near.log para registrar información útil durante la ejecución del contrato, como la cuenta del beneficiario y mensajes de agradecimiento por las donaciones.
- Uso de la función near.promiseBatchCreate para crear un lote de promesas para transferir los fondos al beneficiario, garantizando que las transferencias se realicen de manera segura incluso si una de las funciones no se ejecuta correctamente.
- Uso de subcomponentes en BOS, lo que permite modularidad y un mejor desarrollo de la Dapp
- Llamada de contratos apartir de una interfaz de usuario
- Manejo de estilos css desde un componente usando objetos
- Estructura de un proyecto de contrato inteligente en NEAR, incluyendo la separación de archivos para un modelo claro y mantenible.
- Uso de pruebas unitarias para garantizar el correcto funcionamiento del contrato y la gestión adecuada de las donaciones..
- Despliegue exitoso de contratos inteligentes en la red de prueba de NEAR, demostrando la capacidad de llevar el contrato desde el desarrollo hasta la implementación en un entorno real.
- Creación de interfaces de usuario descentralizadas usando BOS y React
Para ver el componente visite el siguiente enlace: https://test.near.social/manueldesarrolla.testnet/widget/donate-to-artists.index
(En el caso de windows tenerlo sobre wsl)
- Tener nodejs instalado
- Tener near-cli instalado
- Tener cargo-near instalado
Clona este repositorio de forma local Luego, navega desde la consola hasta la carpeta clonada y sigue estos pasos:
Instalar las dependencias
npm install
Simula interacciones de usuarios automaticamente de acuerdo al archivo de pruebas unitarias ubicado en en sandbox-ts/main.ava.ts.
npm run build
npm run test
Cree una cuenta aleatoria donde desplegar el contrato
cargo-near near create-dev-account use-random-account-id autogenerate-new-keypair save-to-legacy-keychain network-config testnet create
Despliega tu contrato en un entorno de prueba, quite el los simbolos
near deploy detailed-table.testnet build/donate_to_artists.wasm
Llame el contrato desde la cuenta creada y el la cuenta beneficiaria cambiela por una de prueba
near call <id-account-created> donate '{"beneficiary": "<account-beneficary-id>"}' --amount 1 --accountId <id-account-created>
Con el siguiente comando podrá ver las donaciones echas
near view <id-account-created> get_donations
---
### 7. Crear un proyecto
Llame la función que crea el proyecto y agregue los datos que desee
```bash
near call <id-account-created> createProyect '{"project_name": "nombre del proyecto", "description": "descripcion del proyecto"}' --accountId <dueño-proyecto>
---
### 8. Ver proyectos
Con el siguiente comando podrá ver los proyectos creados
```bash
near view <id-account-created> getAllProjects
---
### 8. Ver proyectos por dueños de proyectos
Con el siguiente comando podrá ver los proyectos creados por un dueño en especifico
```bash
near view <id-account-created> getProjectsByOwner '{"owner_id": "<dueño-proyecto>"}'
---
getProjectsByOwner
### 9. Fondear un proyecto
Ahora llame la función que se encarga de crear el proyecto y agregue el indixe del proyecto el cual aparece en el log al crear el proyecto
```bash
near call <id-account-created> donateToProject '{"project_index": "0"}' --amount 0.01 --accountId <donador>
---