gpt4 book ai didi

substrate - 如何在 Substrate 的智能合约平台ink上保存字符串值?

转载 作者:行者123 更新时间:2023-12-04 15:20:17 24 4
gpt4 key购买 nike

  • 我最初尝试了这个问题中所教的实现。
    ( How can I save string value on Substrate )
  • 但是,发生了与“ink_abi”和结构相关的错误
    无法定义。
  • 看最新的"ink!example"(),我尝试复制它,因为
    该结构已定义,但以下命令不起作用。
    ( https://github.com/paritytech/ink/blob/master/examples/runtime-storage/lib.rs )
  • cargo +nightly generate-metadata
  • 如何使用“substrate”将字符串数据保存到区块链
    墨水!”?
  • 如果可用,我想查看示例源。
  • 最佳答案

    用墨水!您可以直接使用String类型。
    这是一个墨水的简单实现!通过测试来执行此操作的契约(Contract)(从 incrementer example 修改而来:

    #![cfg_attr(not(feature = "std"), no_std)]

    use ink_lang as ink;

    #[ink::contract(version = "0.1.0")]
    mod basic_string {
    #[ink(storage)]
    struct BasicString {
    value: String,
    }

    impl BasicString {
    #[ink(constructor)]
    fn new(init_value: String) -> Self {
    Self { value: init_value }
    }

    #[ink(constructor)]
    fn default() -> Self {
    Self::new(Default::default())
    }

    #[ink(message)]
    fn set(&mut self, new: String) {
    self.value = new;
    }

    #[ink(message)]
    fn get(&self) -> String {
    self.value.clone()
    }
    }

    #[cfg(test)]
    mod tests {
    use super::*;

    #[test]
    fn default_works() {
    let contract = BasicString::default();
    assert_eq!(contract.get(), "");
    }

    #[test]
    fn it_works() {
    let mut contract = BasicString::new("Hello World!".into());
    assert_eq!(contract.get(), "Hello World!");
    contract.set("Goodbye!".into());
    assert_eq!(contract.get(), "Goodbye!");
    }
    }
    }

    关于substrate - 如何在 Substrate 的智能合约平台ink上保存字符串值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63459771/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com