Skip to content

Commit

Permalink
initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
EdwardsVO committed Mar 24, 2022
0 parents commit 2fdcc05
Show file tree
Hide file tree
Showing 351 changed files with 165,477 additions and 0 deletions.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/.vscode

node_modules
/blockchain/contract/target
/blockchain/near-contract-standards-3.2.0/target
45 changes: 45 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# 👨‍👩‍👦‍👦 Marketplace de arte de comunidades latinas

Este proyecto tiene como eje central el comercializar arte digital proveniente de comunidades indígenas en toda américa latina, haciendo uso de los tokens NFT (Non Fungibles Tokens) de la tecnología blockchain para encapsular el valor de la historia que cada pieza pueda contar.
Actualmente existen alrededor de 522 pueblos indígenas en américa latina cada una con historia, tradiciones, cultura y arte única, misma que puede ser transmitida a todo el mundo mediante una red descentralizada creando y compartiendo contenido único y coleccionable.

De manera técnica esta dApp permite las funcionalidades de un Marketplace (Minar un NFT, Vender, Comprar, Revender, Listar tokens y quitar de la venta) tanto en un contrato construido en Solidity para Aurora EVM (Ethereum Virtual Machine) y uno en Rust para NEAR con las mismas funcionalidades. A su vez con una interfaz de usuario que nos da la opción de elegir entre NEAR o Aurora para interactuar con estos contratos del marketplace.


## 📚 ¿Como esta estructurado el proyecto?

El proyecto consta de 4 partes:
1. La construcción de un smart contract que hace posible la interacción con la blockchain. En esta ocasión utilizando la `EVM (Ethereum Virtual Machine) de NEAR llamada Aurora`, esta nos da la compatibilidad con la red de ethereum dentro del protocolo de NEAR. (`Corresponde al directorio blockchain`)
2. El desarrollo de la interfaz de usuario (frontend) amigable que permita consumir el smart contract a través de la wallet de [MetaMask]. (`Corresponde al directorio frontend`)
3. La construcción de un smart contract utilizando el lenguaje de programación Rust para la network de NEAR. Este contrato tiene la misma funcionalidad de marketplace que el contrato para la EVM Aurora. (`Dentro del directorio rust-contract en el directorio blockchain`)
4. Integrar `near-api-js` en el frontend para consumir el contrato de Rust en NEAR. (`Dentro al directorio frontend`)

## Documentación de cada parte del proyecto

[Contrato en solidity para Aurora EVM]

[Contrato en Rust para NEAR]

[Frontend]

## 🎥 Avances del proyecto

Dentro de los avances del desarrollo de este proyecto se encuentran multiples listas de reproducción que sirven como apoyo para aquellos que busquen continuar con el crecimiento de esta dApp aportando nuevas funcionalidades o siemplemente para conocer como fue el proceso de crear e implementar este proyecto utilizando NEAR y Aurora. En el canal en YouTube de [NEAR Hispano] se encuentran las diversas listas de reproducción.

Avance diario de desarrollo del proyecto:
https://www.youtube.com/watch?v=9J2xkT_tFHk&list=PLixWO0N_iFTMGU3M5KHpuMqhpdMKzw88f

Primer demo de las funcionalidades del proyecto (solo Aurora EVM):
https://www.youtube.com/watch?v=9PfxYtO0HK4&list=PLixWO0N_iFTOoCXL_rcyDowvxaO8BKAUD

Demo final de las funcionalidades del proyecto (Implementación de contrato en Rust y Aurora):
https://www.youtube.com/playlist?list=PLixWO0N_iFTNtlOFTYYVmjd_R5m4W1YV-

Comparación de rendimiento de las redes Aurora, NEAR y Ropsten:
https://www.youtube.com/playlist?list=PLixWO0N_iFTPr5LSe6s1RZfEw6yXPWV7p

[MetaMask]: https://metamask.io/
[NEAR Hispano]: https://www.youtube.com/channel/UCGJRj-rzdgow2nIAZ_pTkbQ
[Contrato en solidity para Aurora EVM]: https://github.com/cristian-cloudmex/NFT-culturas-latinas/blob/master/blockchain/README.md
[Contrato en Rust para NEAR]: https://github.com/cristian-cloudmex/NFT-culturas-latinas/blob/master/blockchain/rust-contract/README.md
[Frontend]: https://github.com/cristian-cloudmex/NFT-culturas-latinas/blob/master/frontend/README.md
Binary file added assets/cambiar_address.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/despliegue.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/seed_phrase.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/truffle.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions blockchain/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/build
/node_modules
/rust-contract/contract/target
/rust-contract/near-contract-standards-3.2.0/target
1 change: 1 addition & 0 deletions blockchain/.secret
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
essay nest song section rail leopard glove length judge hover iron strike
133 changes: 133 additions & 0 deletions blockchain/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
`💻 Tecnologías utilizadas`
==========

para el desarrollo del smart contract se utilizo el siguiente stack de tecnologías:
1. truffle framework
2. node.js versión 12
3. Solidity
4. MetaMask (extensión del navegador y app móvil)
5. red de [aurora]

`👨🏻‍💻 instalación local`
=================

1. para instalar el proyecto de forma local primero tenemos que asegurarnos de tener node js instalado en nuestro equipo, para eso es recomendado usar la herramienta de [nvm] (node version manager) e instalamos la versión 12

```bash
nvm install 12.22.1
```
2. instalamos de forma global el framework de truffle
```bash
npm install -g truffle
```
3. instalamos las dependencias del archivo `package.json` dentro del directorio `/blockchain`
```bash
npm install
```

`👩🏻‍💻 despliegue del smart contract en la red de` [aurora]
================

una vez instalado de forma local el proyecto es necesario desplegar el contrato en la red de [aurora], para esto primero tendremos que configurar el proyecto para usar nuestra address de la wallet de metamask asi como el seed phrase para esto configuraremos dos archivos:

1. configuramos el `truffle-config.js` dentro del directorio `/blockchain` y cambiamos el address por el propio

![picture](https://github.com/cristian-cloudmex/NFT-culturas-latinas/blob/master/assets/cambiar_address.png?raw=true)

2. configuramos el archivo `.secret` dentro del directorio `/blockchain` y escribimos nuestra seed phrase (frase de 12 palabras) como texto plano

![picture](https://github.com/cristian-cloudmex/NFT-culturas-latinas/blob/master/assets/seed_phrase.png?raw=true)

con todo configurado pasamos a ejecutar el siguiente `script` estando dentro del directorio `/blockchain` para desplegar el contrato
```bash
npm run deploy:aurora
```
este comando desplegará el smart contract en la red de [aurora] para que podamos interactuar posteriormente con él.

![picture](https://github.com/cristian-cloudmex/NFT-culturas-latinas/blob/master/assets/despliegue.png?raw=true)

`interactuar con el smart contract`
================

para interactuar con el smart contract desplegado es necesario hacer una instancia del contrato desde la consola de truffle para eso usaremos los siguientes comandos:

```bash
truffle console --network auroraTestnet
```

```bash
const cvt = await MarketPlace.deployed()
```

![picture](https://github.com/cristian-cloudmex/NFT-culturas-latinas/blob/master/assets/truffle.png?raw=true)

`📃 Métodos del smart contract`
===============
para ejecutar estos metodos primero debemos tener una `instancia del contrato corriendo en la red de aurora`

Método para minar un nuevo token nft
------------------

```bash
await cvt.minar("address", "data", precio)
```

Método para transferir un token nft
-----------------
```bash
await cvt.transferirNft("address", tokenid)
```

Método para listar los token nft a la venta
-----------------
```bash
await cvt.obtenerNfts()
```

Método para comprar un token nft
----------------
```bash
await cvt.comprarNft(tokenid)
```

Método para listar mis tokens nft adquiridos
---------------
```bash
await cvt.tokensOf("address")
```

Método para quitar de la venta uno de mis token nft
---------------
```bash
await cvt.quitarDelMarketPlace(tokenid)
```

Método para revender un token nft
---------------
```bash
await cvt.revender(tokenid, precio)
```

`arbol de archivos`
================

```bash
├── readme.md #este archivo
├── contracts #directorio con los smart contract en solidity
│   ├── marketplace.sol
│   └── migrations.sol
├── migrations #migraciones del contrato
│   ├── 1_initial_migration.js
│   └── 2_market_place.js
├── package-lock.json
├── package.json #archivo de dependencias del proyecto
├── test #directorio de los test del smart contract
│   └── market_place.js
├── truffle-config.js # archivo de configuración de truffle
├── utils
│   └── exception.js
└── yarn.lock
```

[nvm]: https://github.com/nvm-sh/nvm
[aurora]: https://aurora.dev/
Loading

0 comments on commit 2fdcc05

Please sign in to comment.