diff --git a/src/lib.rs b/src/lib.rs index 3420c77..c99f66c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -604,3 +604,12 @@ pub fn selfdestruct(address: &Address) -> ! { native::ethereum_selfDestruct(address.bytes.as_ptr() as *const u32); } } + +pub fn is_account_empty(address: &Address) -> bool { + let ret = unsafe { native::ethereum_isAccountEmpty(address.bytes.as_ptr() as *const u32) }; + if ret != 0 && ret != 1 { + panic!(); + } + + ret == 1 +} diff --git a/src/native.rs b/src/native.rs index caebb16..fd11b49 100644 --- a/src/native.rs +++ b/src/native.rs @@ -74,4 +74,5 @@ extern "C" { pub fn ethereum_storageLoad(keyOffset: *const u32, resultOffset: *const u32); pub fn ethereum_storageStore(keyOffset: *const u32, valueOffset: *const u32); pub fn ethereum_selfDestruct(addressOffset: *const u32) -> !; + pub fn ethereum_isAccountEmpty(addressOffset: *const u32) -> u32; }