На чернилах субстрата !, почему значение "строки", полученное с помощью "вызова RPC", всегда одинаково?
- Реализована программа "Простые чернила!", Сохраняющая значение "символьной строки".
- Я загрузил и развернул в локальной сети субстрата.
- Я вызываю функцию "set_test_data" и получаю данные, вызывая функцию "get_test_data".
- Я использую "Polkadot/Substrate Portal"
- Даже если я устанавливаю разные данные, данные, которые можно получить, всегда одни и те же.
- Почему?
Это та самая ценность.
{"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()
}
}
}
== в 2020/8/20 добавить
- Я реализовал этот код, и я выполнил.
- В этом случае я получил правильное значение.
- Значение равно "{"vec":{"elems":"0x0c414243"}}".
#[ink(message)]
fn set_test_data(&mut self, value: String) {
//self.test_data.set(value);
self.test_data.set(String::from("ABC"));
}
#[ink(message)]
fn get_test_data(&self) -> String {
self.test_data.clone()
}
- Затем я реализовал этот код и выполнил его.
- В этом случае я ошибся значением.
- Я предполагаю, что Polkadot / Substrate Portal не может отправить правильное значение.
- Значение равно "{"vec":{"elems":"0x084e4f"}}".
#[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()
}
- Не могли бы вы сказать мне свое мнение?
1 ответ
Когда вы конвертируете это шестнадцатеричное значение в строку, вы получаете:
?<[object Object]
Это означает, что существует некоторая основная проблема с JavaScript. Можете ли вы описать, как вы запрашиваете данные? Я предполагаю, что здесь есть ошибка.