Accelerating colombian farmers entry to the cannabis industry through blockchain validation.
- Inicialización del contrato.
- El constructor no tiene inputs.
- Se inicializan
ERC721.initializer(name, symbol)
yOwnable.initializer(owner)
. Se guarda un 0 en la en la storage variabletoken_counter() -> (number: Uint256)
.
- El usuario puede llamar la variable external
register_yourself(application_number: felt: felt, name: felt, last_name: felt, id: felt) -> ()
. En el argumento register_number registra el número de registro de su aplicación, su nombre, su apellido y su cédula. Está información se guarda en un structUserInfo
con los membersapplication_number: felt, name, last_name, id_cedula, already_approved, licence_number, accepting_collaborations
. Inicialmentealready_approved, licence_number, accepting_collaborations
tienen un 0 pues el usuario se está registrando.- Se escribe en la storage variable
address_to_user_info(address: felt) -> (user_info: UserInfo)
la información que el usuario envia. - Se crea la storage variable
tokenID_to_user(tokenID: Uint256) -> (address: felt)
y el getterget_user_from_tokenID(tokenID: Uint256) -> (address: felt)
. - Se suma 1 a la storage variable
token_counter.write(new_token)
. - Se llama
ERC721._mint(to=caller, token_id=new_tokenID)
. Con esto el usuario se vuelve owner del equivalente a un collectible en su billetera.
- Se escribe en la storage variable
- Una vez que el usuario tenga la licencia aprobada puede llamar la variable external
got_my_license_approved(licence_number: felt, accepting_collaborations: felt)
. Primero se revisa que en efecto este usuario ya esté registrado, sino devuelve error. Está función registra en el structUserInfo.already_approved
y enUserInfo.accepting_collaborations
un 1 y enUserInfo.license_number
el numero de la licencia nueva. - Con el getter
get_user_info(address: felt) -> (info: UserInfo)
se puede obtener la información del usuario. Para simplicidad, el getterget_already_approved(address: felt) -> (is_approved: felt, is_collaborating: felt)
indica si el usuario ya fue aprobado para operar y si acepta colaboraciones.
- Capacidad de inicializar un documento indicando el sitio en IPFS donde se encuentra.
- Se llama la función, who_collaborating() -> (len: felt, users_collaborating: felt*) para leer una storage variable donde se mantienen los usuarios que aceptan colaborar.