Contenido del curso
Contenido del curso
Fernando Piñango
Nicolás Montanari
Yilson Contreras
Eber Laurente Lliuyacc
Juan David Díaz Pastrana
Fernando Piñango
Edward Rodriguez
si al hacer el comando
cargo build --target wasm32-unknown-unknown --release
no se les genera el archivo .wasm
sino solo archivos .d y .rlib
intenten esto:
primero el comando solito: cargo build
luego el comando completo con el target: cargo build --target wasm32-unknown-unknown --release
No compila, el compilador me dice "no matching pakage named 'parity-secp256k1' found". Estoy buscando soluciones. A alguien mas le pasó?
yo probé usando estas dependencias
[dependencies]near-sdk = "5.4" [dev-dependencies]near-sdk = { version = "5.5", features = ["unit-testing"] }near-workspaces = { version = "0.14.1", features = ["unstable"] }tokio = { version = "1.12.0", features = ["full"] }serde_json = "1"
Profesor, después de la compilación no se genera el archivo .wasm. Se genera le .d y .rlib, pero no el .wasm
Uso las siguientes dependencias
[lib] create-type = ["cdylib", "rlib"] [dependencies] near-sdk = "4.0.0" ``` Código: ``` use near_sdk::borsh::{self, BorshDeserialize, BorshSerialize}; use near_sdk::collections::UnorderedMap; use near_sdk::serde::{Deserialize, Serialize}; use near_sdk::{near_bindgen, env, Promise, AccountId}; // near_sdk::setup_alloc!(); /**************** Estructura de Meme **************** Implementamos serde cuando necesitamos retornar la estructura serializada a JSON, util en NEAR, CLI y frontend. En este caso se utiliza ambas serializaciones (JSON y Borsh), usamos Borsh en la serialización de la blockchain de NEAR */ #[derive(Serialize, Deserialize, BorshSerialize, BorshDeserialize)] #[serde(crate = "near_sdk::serde")] pub struct Meme{ pub id: u64, pub creado_por: AccountId, pub titulo: String, pub museo: String, pub url: String, pub donaciones: u128, } // Implementación del trait default para inicializar la estructura de Meme impl Default for Meme { fn default() -> Self { Meme { id: 0, creado_por: "".parse().unwrap(),//String::from(""), titulo: String::from(""), museo: String::from(""), url: String::from(""), donaciones: 0, } } } // Implementación del metodo new que permite crear nuevos memes impl Meme { pub fn new(titulo: String, url: String, museo: String) -> Self { Self { // id y creado_por necesitan ser obtenidos desde la blockchain // id: 0, // creado_por: String::from(""), id: env::block_height(), creado_por: env::signer_account_id(), titulo, museo, url, donaciones: 0, } } } // State del contrato e inicialización de los valores por defacult #[near_bindgen] #[derive(BorshDeserialize, BorshSerialize)] pub struct SimpleMemeMuseum{ // Guardamos solo los ID para evitar editar en ambos lados museos: UnorderedMap<String, Vec<u64>>, memes: UnorderedMap<u64, Meme>, } // Inicialización de state del contrato impl Default for SimpleMemeMuseum { fn default() -> Self { Self { museos: UnorderedMap::new(b"u".to_vec()), memes: UnorderedMap::new(b"e".to_vec()) } } } #[near_bindgen] impl SimpleMemeMuseum { pub fn crear_meme(&mut self, titulo: String, url: String, nombre_museo: String){ let meme = Meme::new( String::from(&titulo), String::from(&url), String::from(&nombre_museo), ); //guardamos en una coleccion de memes self.memes.insert(&meme.id,&meme); //buscamos si el museo existe para despues añadir el meme en este. let museo = self.museos.get(&nombre_museo); if museo.is_some(){ //m almacena el valor de some() del option<> o panic let mut m = museo.unwrap(); m.push(meme.id); //insertamos en la colección de museos el museo y meme ligado a este self.museos.insert(&nombre_museo, &m); } else { let mut nuevo_museo = Vec::new(); nuevo_museo.push(meme.id); self.museos.insert(&nombre_museo, &nuevo_museo); } //manda un mensaje a la terminal al ejecutar el método env::log_str( format!( "Nuevo meme añadido con éxito. Museo: {}, Id Meme: {}", &nombre_museo, meme.id ) .as_ref(), ); } pub fn obtener_meme(&self, id: u64) -> Option<Meme>{ self.memes.get(&id) } pub fn obtener_lista_memes(&self) -> Vec<(u64, Meme)> { self.memes.to_vec() } pub fn obtener_lista_museos(&self) -> Vec<String> { self.museos.keys_as_vector().to_vec() } pub fn obtener_memes_museo(&self, nombre_museo: String) -> Vec<Meme> { let museo = self.museos.get(&nombre_museo); if museo.is_some(){ let mut lista_memes = Vec::new(); for meme_id in &museo.unwrap() { let meme = self.memes.get(meme_id); if meme.is_some() { lista_memes.push(meme.unwrap()); } } return lista_memes; }else{ // env::log_str("No existe el museo ingresado").as_bytes(); return Vec::new(); } } #[payable] pub fn donar_a_meme(&mut self, id: u64) -> bool { assert!( env::attached_deposit() > 0, "Debes de agregar NEAR para hacer una donación" ); //buscamos meme match self.memes.get(&id) { Some(mut meme) => { //si existe guardamos la donación en el registro meme.donaciones += env::attached_deposit(); self.memes.insert(&meme.id, &meme); //Y transferimos la donación al creador del meme Promise::new(meme.creado_por) .transfer(env::attached_deposit()); true } None => false, } } } ```
Eso puede ocurrir al no ponerle el target a cargo
me pasa lo mismo,
cargo build --target wasm32-unknown-unknown --release
alguna solucion?
Para el problema del balance al momento de hacer el deploy, pueden usar un faucet: