pub struct NormalizedReadWriteSetAnalysis(_);Implementations
sourceimpl NormalizedReadWriteSetAnalysis
impl NormalizedReadWriteSetAnalysis
pub fn new(
inner: BTreeMap<ModuleId, BTreeMap<Identifier, ReadWriteSet>>
) -> Self
sourcepub fn trim(&self) -> Self
pub fn trim(&self) -> Self
Trim the analysis result by dropping all the results in the trie. This should not affect the correctness for those non secondary index access as all relevant info should be stored in the root node already. Trimming the result will yield a higher inference speed at runtime.
sourcepub fn get_keys_written(
&self,
module: &ModuleId,
fun: &IdentStr,
signers: &[AccountAddress],
actuals: &[Vec<u8>],
type_actuals: &[TypeTag],
blockchain_view: &impl MoveResolver
) -> Result<Vec<ResourceKey>>
pub fn get_keys_written(
&self,
module: &ModuleId,
fun: &IdentStr,
signers: &[AccountAddress],
actuals: &[Vec<u8>],
type_actuals: &[TypeTag],
blockchain_view: &impl MoveResolver
) -> Result<Vec<ResourceKey>>
Returns an overapproximation of the ResourceKey’s in global storage that will be written
by module::fun if called with arguments signers, actuals, type_actuals in state
blockchain_view.
sourcepub fn get_keys_read(
&self,
module: &ModuleId,
fun: &IdentStr,
signers: &[AccountAddress],
actuals: &[Vec<u8>],
type_actuals: &[TypeTag],
blockchain_view: &impl MoveResolver
) -> Result<Vec<ResourceKey>>
pub fn get_keys_read(
&self,
module: &ModuleId,
fun: &IdentStr,
signers: &[AccountAddress],
actuals: &[Vec<u8>],
type_actuals: &[TypeTag],
blockchain_view: &impl MoveResolver
) -> Result<Vec<ResourceKey>>
Returns an overapproximation of the ResourceKey’s in global storage that will be read by
module::fun if called with arguments signers, actuals, type_actuals in state
blockchain_view.
sourcepub fn get_concretized_keys(
&self,
module: &ModuleId,
fun: &IdentStr,
signers: &[AccountAddress],
actuals: &[Vec<u8>],
type_actuals: &[TypeTag],
blockchain_view: &impl MoveResolver,
is_write: bool
) -> Result<Vec<ResourceKey>>
pub fn get_concretized_keys(
&self,
module: &ModuleId,
fun: &IdentStr,
signers: &[AccountAddress],
actuals: &[Vec<u8>],
type_actuals: &[TypeTag],
blockchain_view: &impl MoveResolver,
is_write: bool
) -> Result<Vec<ResourceKey>>
Returns an overapproximation of the ResourceKey’s in global storage that will be accesses
by module::funif called with argumentssigners, actuals, type_actualsin stateblockchain_view. If is_write` is true, only ResourceKey’s written will be returned; otherwise, only
ResourceKey’s read will be returned.
sourcepub fn get_concretized_summary(
&self,
module: &ModuleId,
fun: &IdentStr,
signers: &[AccountAddress],
actuals: &[Vec<u8>],
type_actuals: &[TypeTag],
blockchain_view: &impl MoveResolver
) -> Result<ConcretizedSecondaryIndexes>
pub fn get_concretized_summary(
&self,
module: &ModuleId,
fun: &IdentStr,
signers: &[AccountAddress],
actuals: &[Vec<u8>],
type_actuals: &[TypeTag],
blockchain_view: &impl MoveResolver
) -> Result<ConcretizedSecondaryIndexes>
Returns an overapproximation of the access paths in global storage that will be read/written
by module::fun if called with arguments signers, actuals, type_actuals in state
blockchain_view.
pub fn get_canonical_summary(
&self,
module: &ModuleId,
fun: &IdentStr
) -> Option<ReadWriteSet>
sourcepub fn get_partially_concretized_summary<R: GetModule>(
&self,
module: &ModuleId,
fun: &IdentStr,
signers: &[AccountAddress],
actuals: &[Vec<u8>],
type_actuals: &[TypeTag],
module_cache: &R
) -> Result<ConcretizedFormals>
pub fn get_partially_concretized_summary<R: GetModule>(
&self,
module: &ModuleId,
fun: &IdentStr,
signers: &[AccountAddress],
actuals: &[Vec<u8>],
type_actuals: &[TypeTag],
module_cache: &R
) -> Result<ConcretizedFormals>
Returns the access paths in global storage that will be read/written by module::fun if called with arguments signers, actuals, type_actuals. This will be an overapproximation if module::fun contains no secondary indexes; otherwise it is neither an overapproximation nor an underapproximation
by module::fun if called with arguments signers, actuals, type_actuals.
We say “partially concretized” because the summary may contain secondary indexes that require reads from the current blockchain state to be concretized. If desired, the caller can concretized them using
sourcepub fn may_have_secondary_indexes(
&self,
module: &ModuleId,
fun: &IdentStr
) -> Result<bool>
pub fn may_have_secondary_indexes(
&self,
module: &ModuleId,
fun: &IdentStr
) -> Result<bool>
Return true if module::fun may read an address from the blockchain state and
subsequently read/write a resource stored at that address. Return false if the function
will not do this in any possible concrete execution. Return an error if module::fun does
not exist.
pub fn into_inner(
self
) -> BTreeMap<ModuleId, BTreeMap<Identifier, ReadWriteSet>>
Auto Trait Implementations
impl RefUnwindSafe for NormalizedReadWriteSetAnalysis
impl Send for NormalizedReadWriteSetAnalysis
impl Sync for NormalizedReadWriteSetAnalysis
impl Unpin for NormalizedReadWriteSetAnalysis
impl UnwindSafe for NormalizedReadWriteSetAnalysis
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more