Substrate 在承印物油墨上!,为什么是";“字符串”;通过以下方式获得的值:;RPC调用";总是一样吗? 保存“字符串”值的“Simple ink!Program”是 执行 我上传并部署在本地的基板链上 我调用“set_test_data”函数,通过调用 “获取测试数据”功能 我使用“Polkadot/基板入口” 即使我设置了各种数据,可以获得的数据总是 同样的 为什么?

Substrate 在承印物油墨上!,为什么是";“字符串”;通过以下方式获得的值:;RPC调用";总是一样吗? 保存“字符串”值的“Simple ink!Program”是 执行 我上传并部署在本地的基板链上 我调用“set_test_data”函数,通过调用 “获取测试数据”功能 我使用“Polkadot/基板入口” 即使我设置了各种数据,可以获得的数据总是 同样的 为什么?,substrate,rust-ink,Substrate,Rust Ink,这是相同的值 {"vec":{"elems":"0x3c5b6f626a656374204f626a6563745d"}} 这是我的密码 #![cfg_attr(not(feature = "std"), no_std)] use ink_lang as ink; #[ink::contract(version = "0.1.0")] mod test_contract { use

这是相同的值

{"vec":{"elems":"0x3c5b6f626a656374204f626a6563745d"}}
这是我的密码

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

use ink_lang as ink;

#[ink::contract(version = "0.1.0")]
mod test_contract {
    use ink_core::storage;
    use ink_prelude::string::String;

    /// Defines the storage of your contract.
    /// Add new fields to the below struct in order
    /// to add new static storage fields to your contract.
    #[ink(storage)]
    struct TestContract{
        test_data: storage::Value<String>,
    }

    impl TestContract{
        /// constructor of TestContract
        #[ink(constructor)]
        fn new(&mut self) {

        }

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

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

  • 接下来,我实现了这段代码,并执行了
  • 在这种情况下,我得到了错误的值
  • 我猜Polkadot/Subscriber Portal无法发送正确的值
  • 值为“{”vec:{”elems:“0x084e4f”}”
  • 你能告诉我你的意见吗

将此十六进制值转换为字符串时,您会得到:

?<[object Object]

?我使用“Python2”将“string”更改为“hex”。例如,“japan.encode('hex')”。结果“6a6170616e”设置为“0x6a6170616e”,并设置为“set_test_data”函数的参数。在“Polkadot/Subscriber Portal”中,字符串参数似乎是以十六进制设置的,所以我正在这样做,但我不知道正确的方法。我继续调查。我添加了结果。我认为这是一个Polkadot/基板门户错误,但是关于它呢?你是说从一开始?
        #[ink(message)]
        fn set_test_data(&mut self, value: String) {
            //self.test_data.set(value);
            if value == String::from("ABC") {
                self.test_data.set(String::from("ABC"));
            } else {
                self.test_data.set(String::from("NO"));
            }
        }

        #[ink(message)]
        fn get_test_data(&self) -> String {
            self.test_data.clone()
        }
?<[object Object]