Просмотр исходного кода

blockchain/contract_store: exclude contracts zkas verifying keys from their monotree record value

skoupidi 6 месяцев назад
Родитель
Сommit
bfd1c9f7ac

+ 1 - 1
bin/darkfid/genesis_block_localnet

@@ -1 +1 @@
-AYa7rEMKSzoYLxJbN6SG6cSGu/o02E70pmtKI+XwxiWxAAAAAAAAAAAuTGppAAAAADs822+Z8eocSeM2cBLVQuRsIQzi4hikKA26/mTDYRMI9JKJ8RgIn79FQjTthZZ4JNlbuoMTaklPpyWHRVmBLIUAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+AYa7rEMKSzoYLxJbN6SG6cSGu/o02E70pmtKI+XwxiWxAAAAAAAAAADNGW5pAAAAADs822+Z8eocSeM2cBLVQuRsIQzi4hikKA26/mTDYRMI3B26eM431XcoU3nvP3rIX5PBf+lWoUENTTZy5HiNw8wAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=

+ 1 - 1
bin/darkfid/genesis_block_mainnet

@@ -1 +1 @@
-AYa7rEMKSzoYLxJbN6SG6cSGu/o02E70pmtKI+XwxiWxAAAAAAAAAAB2TGppAAAAADs822+Z8eocSeM2cBLVQuRsIQzi4hikKA26/mTDYRMI9JKJ8RgIn79FQjTthZZ4JNlbuoMTaklPpyWHRVmBLIUAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+AYa7rEMKSzoYLxJbN6SG6cSGu/o02E70pmtKI+XwxiWxAAAAAAAAAAAXGm5pAAAAADs822+Z8eocSeM2cBLVQuRsIQzi4hikKA26/mTDYRMI3B26eM431XcoU3nvP3rIX5PBf+lWoUENTTZy5HiNw8wAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=

+ 1 - 1
bin/darkfid/genesis_block_testnet

@@ -1 +1 @@
-AYa7rEMKSzoYLxJbN6SG6cSGu/o02E70pmtKI+XwxiWxAAAAAAAAAABTTGppAAAAADs822+Z8eocSeM2cBLVQuRsIQzi4hikKA26/mTDYRMI9JKJ8RgIn79FQjTthZZ4JNlbuoMTaklPpyWHRVmBLIUAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+AYa7rEMKSzoYLxJbN6SG6cSGu/o02E70pmtKI+XwxiWxAAAAAAAAAADxGW5pAAAAADs822+Z8eocSeM2cBLVQuRsIQzi4hikKA26/mTDYRMI3B26eM431XcoU3nvP3rIX5PBf+lWoUENTTZy5HiNw8wAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=

+ 21 - 0
src/blockchain/contract_store.rs

@@ -536,6 +536,27 @@ impl ContractStoreOverlay {
                 None => ContractMonotreeUpdates::new(monotree_pointer),
             };
 
+            // Handle the contract zkas tree
+            if contract_id.hash_state_id(SMART_CONTRACT_ZKAS_DB_NAME) == state_key {
+                // Grab the new/updated keys
+                for (key, (_, value)) in &state_cache.0.cache {
+                    // Prefix key with its tree name
+                    let mut hasher = blake3::Hasher::new();
+                    hasher.update(&state_key);
+                    hasher.update(key);
+                    let key = hasher.finalize();
+
+                    // Exclude its verifying key from the value
+                    let (zkbin, _): (Vec<u8>, Vec<u8>) = deserialize(value)?;
+                    let value = blake3::hash(&zkbin);
+                    contract_updates.inserts.push((key, value));
+                }
+
+                // Insert the update record
+                contracts_updates.insert(contract_id_bytes, contract_updates);
+                continue
+            }
+
             // Grab the new/updated keys
             for (key, (_, value)) in &state_cache.0.cache {
                 // Prefix key with its tree name