Ticker

6/recent/ticker-posts

Ad Code

Responsive Advertisement

调用合约方法返回 CompilationError(PrepareError(Instantiate)),是代码哪里不对吗?

报错截图:
image.png

合约内容:

use near_sdk::borsh::{self, BorshDeserialize, BorshSerialize};
use near_sdk::collections::LookupMap;
use near_sdk::collections::Vector;
use near_sdk::serde::{Deserialize, Serialize};
use near_sdk::{near_bindgen, setup_alloc};
use uuid::Uuid;

setup_alloc!();

#[near_bindgen]
#[derive(BorshDeserialize, BorshSerialize)]
pub struct TreeHole {
    secrets: LookupMap<String, Secret>,
    queue: Vector<String>,
}

impl Default for TreeHole {
    fn default() -> Self {
        Self {
            secrets: LookupMap::new(b"s".to_vec()),
            queue: Vector::new(b"q".to_vec()),
        }
    }
}

#[derive(BorshDeserialize, BorshSerialize, Debug, Serialize, Deserialize)]
#[serde(crate = "near_sdk::serde")]
pub struct Secret {
    id: String,
    name: String,
    content: String,
}

const PAGE_SIZE: usize = 10;

#[near_bindgen]
impl TreeHole {
    pub fn add_secret(&mut self, name: String, content: String) {
        let my_uuid = Uuid::new_v4();
        let s = Secret {
            id: my_uuid.to_string(),
            name,
            content,
        };

        self.secrets.insert(&s.id, &s);
        self.queue.push(&s.id)
    }

    pub fn get_secrets(&self, page_num: usize) -> Vec<Secret> {
        assert!(page_num > 0, "invalid page_num: {}", page_num);
        let ids: Vec<String> = self
            .queue
            .iter()
            .skip((page_num - 1) * PAGE_SIZE)
            .take(PAGE_SIZE)
            .collect();

        let mut ss = vec![];
        for id in ids {
            let s = self.secrets.get(&id).unwrap();
            ss.push(s);
        }
        ss
    }
}

Enregistrer un commentaire

0 Commentaires