gpt4 book ai didi

rust - 跟踪 Exonum 中单个对象的变化

转载 作者:行者123 更新时间:2023-11-29 08:18:40 25 4
gpt4 key购买 nike

我在区 block 链上有一个单个对象,它会不时更新。我想跟踪这些变化。我如何描述这样的结构 Vec<(u32, u32)>并在开始时初始化它?现在我有:

encoding_struct! {
struct AC {
const SIZE = 16;
field s: Vec<u32> [00 => 08]
field o: Vec<u32> [08 => 16]
}
}

然后等待一个特殊的空初始化交易

message! {
struct TxInitAC {
const TYPE = SERVICE_ID;
const ID = TX_INIT_AC;
const SIZE = 0;
}
}

execute方法

fn execute(&self, view: &mut Fork) {
let mut schema = CurrencySchema { view };
let ac = AC::new(vec![], vec![]);
schema.access_control().push(ac);
}

最佳答案

在 Gitter 上与开发人员交谈后,我想出了一个解决方案。

要在 encoding_struct! 中描述复合对象,必须在相应的 encoding_struct! 中描述每个组件。在问题的情况下:

encoding_struct! {
struct Pair {
const SIZE = 8;
field s: u32 [00 => 04]
field o: u32 [04 => 08]
}
}

encoding_struct! {
struct AC {
const SIZE = 8;
field inner : Vec<Pair> [00 => 08]
}
}

要初始化区 block 链数据库,必须在 Service trait 中实现 initialize 函数,例如,用空向量初始化:

impl Service for MService {
//...
fn initialize(&self, fork: &mut Fork) -> Value {
let mut schema = MatrixSchema { view: fork };
let matrix = AC::new(vec![]);
// assume method ac() is implemented for the schema
schema.ac().set(ac);
Value::Null
}
}

关于rust - 跟踪 Exonum 中单个对象的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46377392/

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