uberdao es un smart contract escrito bajo el protocolo NEAR que permite:
- Crear solicitud de viaje.
- Obtener una lista de las solicitudes de viajes que se han creado.
- Votar por una propuesta.
- Cambiar el status de un proyecto.
- Eliminar de la lista las solicitudes de viaje.
Para correr este proyecto en local debes seguir los siguientes pasos:
-
Asegúrese de haber instalado Node.js ≥ 12 ((recomendamos usar nvm)
-
Asegúrese de haber instalado yarn:
npm install -g yarn
-
Instalar dependencias:
yarn install
-
Crear un test near account NEAR test account
-
Instalar el NEAR CLI globally: near-cli es una interfaz de linea de comando (CLI) para interacturar con NEAR blockchain
yarn install --global near-cli
Configura tu near-cli para autorizar su cuenta de prueba creada recientemente:
near login
Este comando nos permite clonar el repositorio de nuestro proyecto MINGA
git clone https://github.com/noemk2/uberdao.git
git clone https://github.com/fintechlab-la/minga_avalcomunitario_nearProtocol.git
Una vez que hayas descargado el repositorio, asegurate de ejecutar los comandos dentro del repositorio descargado. Puedes hacerlo con
cd uberdao/
cd minga_avalcomunitario_nearProtocol/
Instale el gestor de dependencia de Node.js dentro del repositorio
npm install
Cree el código de contrato inteligente MINGA AVAL COMUNITARIO e implemente el servidor de desarrollo local:
yarn deploy:dev
Consulte package.json
para obtener una lista completa de scripts
que puede ejecutar con yarn
). Este script le devuelve un contrato inteligente provisional
implementado (guárdelo para
usarlo más tarde)
¡Felicitaciones, ahora tendrá un entorno de desarrollo local ejecutándose en NEAR TestNet!
Permite crear un proyecto que ha sido revisado para entrar a la red de proyectos colaborativos para ser avalados de manera distribuida.
Permite crear una solicitud de viaje para el usuario
Para Linux:
near call <your deployed contract> createTravel '{"traveler":"string","route":"string"}' --account-id <username>.testnet
Para windows:
near call <your deployed contract> createTravel "{\"traveler\": \"string\",\"route\":\"string\"}" --account-id <username>.testnet
Permite listar las solicitudes de viaje que existen en nuestro contrato inteligente.
Antes de ejecutar el comando brindado:
- modifica por el número de contrato generado. Por ejemplo: 'dev-1630622185346-59088620194720'.
- modifica por tu nombre de usuario en testnet. Por ejemplo: 'aval1'
Para Linux y Windows:
near view <your deployed contract> getTravelRequest --account-id <username>.testnet
Permite eliminar una solicitud que ya no pertenece a la red y se da de baja.
Para Linux:
near call <your deployed contract> eliminateTravelRequest '{"id":1}' --account-id <username>.testnet
Para Windows:
near call <your deployed contract> eliminateTravelRequest "{\"id\":<id de proyecto>}" --account-id <username>.testnet
✏️ desplegar contrato /build/release/dao.wasm previamente compilado
near dev-deploy --wasmFile ./build/release/dao.wasm
✏️ recuerda Antes de ejecutar el comando brindado:
- modifica por el número de contrato generado. Por ejemplo: 'dev-1630622185346-59088620194720'.
- modifica por tu nombre de usuario en testnet. Por ejemplo: 'aval1'
init(title: string, data: string): void
# anyone can initialize meme (so this must be done by the museum at deploy-time)
near call dev-1614603380541-7288163 init '{"title": "hello world", "propose": "I want ..."}' --account_id dev-1614603380541-7288163 --amount 3
get_proposal(): Proposal
# anyone can read proposal metadata
near view dev-1614603380541-7288163 get_proposal
{
creator: 'dev-1614603380541-7288163',
created_at: '1614603702927464728',
vote_score: 4,
total_donations: '0',
title: 'hello world',
propose: 'I want ...',
}
near view dev-1614603380541-7288163 get_recent_votes
[
{
created_at: '1614603886399296553',
value: 1,
voter: 'dev-1614603380541-7288163'
},
{
created_at: '1614603988616406809',
value: 1,
voter: 'sherif.testnet'
},
{
created_at: '1614604214413823755',
value: 2,
voter: 'batch-dev-1614603380541-7288163'
},
[length]: 3
]
get_vote_score(): i32
near view dev-1614603380541-7288163 get_vote_score
4
vote(value: i8): void
# user votes for meme
near call dev-1614603380541-7288163 vote '{"value": 1}' --account_id sherif.testnet
batch_vote(value: i8, is_batch: bool = true): void
# only the meme contract can call this method
near call dev-1614603380541-7288163 batch_vote '{"value": 2}' --account_id dev-1614603380541-7288163
add_comment(text: string): void
near call dev-1614603380541-7288163 add_comment '{"text":"i love this meme"}' --account_id sherif.testnet
get_recent_comments(): Array<Comment>
near view dev-1614603380541-7288163 get_recent_comments
[
{
created_at: '1614604543670811624',
author: 'sherif.testnet',
text: 'i love this meme'
},
[length]: 1
]
Las pruebas son parte del desarrollo, luego, para ejecutar las pruebas en el contrato inteligente , debe ejecutar el siguiente comando:
yarn test
Esto ejecutará los métodos de prueba en el assembly/__tests__/example.spec.js
archivo
near call <your deployed contract> hello --account-id <username>.testnet
This is a explanation of the smart contract file system
├── README.md # this file
├── as-pect.config.js # configuration for as-pect (AssemblyScript unit testing)
├── asconfig.json # configuration file for Assemblyscript compiler
├── src
│ ├── viajes <-- viajes contract
│ │ ├── README.md
│ │ ├── __tests__
│ │ │ ├── README.md
│ │ │ └── index.unit.spec.ts
│ │ └── assembly
│ │ ├── index.ts
│ │ └── models.ts
│ ├── dao <-- dao contract
│ │ ├── README.md
│ │ ├── __tests__
│ │ │ ├── README.md
│ │ │ └── index.unit.spec.ts
│ │ └── assembly
│ │ ├── index.ts
│ │ └── models.ts
│ └── utils.ts <-- shared contract code
│
├── neardev
│ ├── dev-account #in this file the provisional deploy smart contract account is saved
│ └── dev-account.env #in this file the provisional deploy smart contract account is saved like a environment variable
│
├── build
│ └── release
│ ├── dao.wasm # compiled smart contract code using to deploy
│ └── viajes.wasm # compiled smart contract code using to deploy
│
├── package-lock.json # project manifest lock version
├── package.json # Node.js project manifest (scripts and dependencies)
└── yarn.lock # project manifest lock version
- El código de los contrato inteligentes vive en la carpeta
/src
folder. - Para realizar una implementación de prueba, use los scripts en el
/package.json
file.
Aquí dejamos una propuesta de diseño UX/UI para desarrollar la parte frontend del proyecto comunitario.