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

sdk/util/get_system_time(): set time value as u64 and minor cleanup

aggstam 3 лет назад
Родитель
Сommit
3fb92f5cd7

+ 4 - 4
src/contract/dao/src/entrypoint.rs

@@ -23,11 +23,11 @@ use darkfi_sdk::{
         pallas, pasta_prelude::*, ContractId, MerkleNode, MerkleTree, PublicKey, DAO_CONTRACT_ID,
         pallas, pasta_prelude::*, ContractId, MerkleNode, MerkleTree, PublicKey, DAO_CONTRACT_ID,
         MONEY_CONTRACT_ID,
         MONEY_CONTRACT_ID,
     },
     },
-    db::{
-        db_contains_key, db_del, db_get, db_init, db_lookup, db_set, set_return_data, zkas_db_set,
-    },
+    db::{db_contains_key, db_del, db_get, db_init, db_lookup, db_set, zkas_db_set},
     error::{ContractError, ContractResult},
     error::{ContractError, ContractResult},
-    merkle_add, msg, ContractCall,
+    merkle_add, msg,
+    util::set_return_data,
+    ContractCall,
 };
 };
 use darkfi_serial::{deserialize, serialize, Decodable, Encodable, WriteExt};
 use darkfi_serial::{deserialize, serialize, Decodable, Encodable, WriteExt};
 
 

+ 4 - 2
src/contract/money/src/entrypoint.rs

@@ -18,9 +18,11 @@
 
 
 use darkfi_sdk::{
 use darkfi_sdk::{
     crypto::{ContractId, MerkleTree, PublicKey},
     crypto::{ContractId, MerkleTree, PublicKey},
-    db::{db_init, db_lookup, db_set, set_return_data, zkas_db_set},
+    db::{db_init, db_lookup, db_set, zkas_db_set},
     error::{ContractError, ContractResult},
     error::{ContractError, ContractResult},
-    msg, ContractCall,
+    msg,
+    util::set_return_data,
+    ContractCall,
 };
 };
 use darkfi_serial::{deserialize, serialize, Encodable, WriteExt};
 use darkfi_serial::{deserialize, serialize, Encodable, WriteExt};
 
 

+ 1 - 1
src/runtime/import/db.rs

@@ -591,7 +591,7 @@ pub(crate) fn zkas_db_set(ctx: FunctionEnvMut<Env>, ptr: WasmPtr<u8>, len: u32)
             }
             }
         }
         }
         Err(e) => {
         Err(e) => {
-            error!(target: "runtime::db::zkas_db_get()", "Internal error getting from tree: {}", e);
+            error!(target: "runtime::db::zkas_db_set()", "Internal error getting from tree: {}", e);
             return DB_SET_FAILED
             return DB_SET_FAILED
         }
         }
     };
     };

+ 3 - 3
src/runtime/import/util.rs

@@ -151,9 +151,9 @@ pub(crate) fn get_object_size(ctx: FunctionEnvMut<Env>, idx: u32) -> i64 {
     obj.len() as i64
     obj.len() as i64
 }
 }
 
 
-pub(crate) fn get_system_time() -> i64 {
+pub(crate) fn get_system_time() -> u64 {
     match SystemTime::now().duration_since(SystemTime::UNIX_EPOCH) {
     match SystemTime::now().duration_since(SystemTime::UNIX_EPOCH) {
-        Ok(t) => t.as_secs() as i64,
-        Err(_) => -1,
+        Ok(t) => t.as_secs(),
+        Err(_) => 0,
     }
     }
 }
 }

+ 1 - 26
src/sdk/src/db.rs

@@ -21,6 +21,7 @@ use darkfi_serial::Encodable;
 use super::{
 use super::{
     crypto::ContractId,
     crypto::ContractId,
     error::{ContractError, GenericResult},
     error::{ContractError, GenericResult},
+    util::{get_object_bytes, get_object_size},
 };
 };
 
 
 pub type DbHandle = u32;
 pub type DbHandle = u32;
@@ -198,33 +199,7 @@ pub fn zkas_db_set(bincode: &[u8]) -> GenericResult<()> {
     }
     }
 }
 }
 
 
-pub fn set_return_data(data: &[u8]) -> Result<(), ContractError> {
-    unsafe {
-        match set_return_data_(data.as_ptr(), data.len() as u32) {
-            0 => Ok(()),
-            errcode => Err(ContractError::from(errcode)),
-        }
-    }
-}
-
-pub fn put_object_bytes(data: &[u8]) -> i64 {
-    unsafe { put_object_bytes_(data.as_ptr(), data.len() as u32) }
-}
-
-pub fn get_object_bytes(data: &mut [u8], object_index: u32) -> i64 {
-    unsafe { get_object_bytes_(data.as_mut_ptr(), object_index) }
-}
-
-pub fn get_object_size(object_index: u32) -> i64 {
-    unsafe { get_object_size_(object_index) }
-}
-
 extern "C" {
 extern "C" {
-    fn set_return_data_(ptr: *const u8, len: u32) -> i64;
-    fn put_object_bytes_(ptr: *const u8, len: u32) -> i64;
-    fn get_object_bytes_(ptr: *const u8, len: u32) -> i64;
-    fn get_object_size_(len: u32) -> i64;
-
     fn db_init_(ptr: *const u8, len: u32) -> i32;
     fn db_init_(ptr: *const u8, len: u32) -> i32;
     fn db_lookup_(ptr: *const u8, len: u32) -> i32;
     fn db_lookup_(ptr: *const u8, len: u32) -> i32;
     fn db_get_(ptr: *const u8, len: u32) -> i64;
     fn db_get_(ptr: *const u8, len: u32) -> i64;

+ 35 - 13
src/sdk/src/util.rs

@@ -18,28 +18,50 @@
 
 
 use super::error::{ContractError, GenericResult};
 use super::error::{ContractError, GenericResult};
 
 
-pub const GET_SYSTEM_TIME_FAILED: i64 = -1;
+pub const CALL_FAILED: u64 = 0;
+
+pub fn set_return_data(data: &[u8]) -> Result<(), ContractError> {
+    unsafe {
+        match set_return_data_(data.as_ptr(), data.len() as u32) {
+            0 => Ok(()),
+            errcode => Err(ContractError::from(errcode)),
+        }
+    }
+}
+
+pub fn put_object_bytes(data: &[u8]) -> i64 {
+    unsafe { put_object_bytes_(data.as_ptr(), data.len() as u32) }
+}
+
+pub fn get_object_bytes(data: &mut [u8], object_index: u32) -> i64 {
+    unsafe { get_object_bytes_(data.as_mut_ptr(), object_index) }
+}
+
+pub fn get_object_size(object_index: u32) -> i64 {
+    unsafe { get_object_size_(object_index) }
+}
 
 
 /// Everyone can call this. Will return current system timestamp.
 /// Everyone can call this. Will return current system timestamp.
 ///
 ///
 /// ```
 /// ```
 /// timestamp = get_system_time();
 /// timestamp = get_system_time();
 /// ```
 /// ```
-pub fn get_system_time() -> GenericResult<i64> {
-    unsafe {
-        let ret = get_system_time_();
+pub fn get_system_time() -> GenericResult<u64> {
+    let ret = unsafe { get_system_time_() };
 
 
-        if ret < 0 {
-            match ret {
-                GET_SYSTEM_TIME_FAILED => return Err(ContractError::GetSystemTimeFailed),
-                _ => unimplemented!(),
-            }
-        }
-
-        Ok(ret)
+    match ret {
+        // 0 here means system time is less or equal than UNIX_EPOCH
+        CALL_FAILED => return Err(ContractError::GetSystemTimeFailed),
+        // In any other case we can return the value
+        _ => Ok(ret),
     }
     }
 }
 }
 
 
 extern "C" {
 extern "C" {
-    fn get_system_time_() -> i64;
+    fn set_return_data_(ptr: *const u8, len: u32) -> i64;
+    fn put_object_bytes_(ptr: *const u8, len: u32) -> i64;
+    fn get_object_bytes_(ptr: *const u8, len: u32) -> i64;
+    fn get_object_size_(len: u32) -> i64;
+
+    fn get_system_time_() -> u64;
 }
 }