Skip to content

Commit

Permalink
Update soroban snk and extend_ttl function
Browse files Browse the repository at this point in the history
  • Loading branch information
MarioRodriguezS committed Dec 21, 2023
1 parent 86bf154 commit 143d91e
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 37 deletions.
4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ edition = "2021"
crate-type = ["cdylib"]

[dependencies]
soroban-sdk = "=20.0.0-rc2.2"
soroban-sdk = "20.0.0"

[dev_dependencies]
soroban-sdk = { version = "=20.0.0-rc2.2", features = ["testutils"] }
soroban-sdk = { version = "20.0.0", features = ["testutils"] }

[profile.release]
opt-level = "z"
Expand Down
8 changes: 5 additions & 3 deletions src/contract.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@ use soroban_sdk::{
contract, contractimpl, contractmeta, panic_with_error, Address, Env, String, Vec,
};

const LEDGERS_THRESHOLD: u32 = 1;
const LEDGERS_TO_EXTEND: u32 = 535_000;
// MAXIMUM ENTRY TTL:
// 31 days, 12 ledger close per minute.
// (12 * 60 * 24 * 31) - 1
const LEDGERS_TO_EXTEND: u32 = 535_679;

contractmeta!(
key = "Description",
Expand Down Expand Up @@ -38,7 +40,7 @@ impl DIDTrait for DIDContract {

e.storage()
.instance()
.bump(LEDGERS_THRESHOLD, LEDGERS_TO_EXTEND);
.extend_ttl(LEDGERS_TO_EXTEND, LEDGERS_TO_EXTEND);

let did_uri = did_uri::generate(&e, &did_method);
did_document::set_initial_did_document(
Expand Down
11 changes: 6 additions & 5 deletions src/did_uri.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ pub fn generate(e: &Env, did_method: &String) -> String {
}

pub fn concat_fragment(e: &Env, did_uri: &String, id: &String) -> String {
let hash_str = String::from_slice(e, "#");
let hash_str = String::from_str(e, "#");

let did_uri_len = did_uri.len() as usize;
let id_len = id.len() as usize;
Expand All @@ -22,7 +22,7 @@ pub fn concat_fragment(e: &Env, did_uri: &String, id: &String) -> String {
hash_str.copy_into_slice(&mut slice[did_uri_len..did_uri_len + 1]);
id.copy_into_slice(&mut slice[(did_uri_len + 1)..combined_len]);

let id_string = String::from_slice(e, core::str::from_utf8(&slice[..combined_len]).unwrap());
let id_string = String::from_str(e, core::str::from_utf8(&slice[..combined_len]).unwrap());

id_string
}
Expand All @@ -31,14 +31,15 @@ fn get_random_bytes(e: &Env) -> [u8; 15] {
let mut random_bytes = [0u8; 15];

for byte in &mut random_bytes {
*byte = e.prng().u64_in_range(0..256) as u8;
let rand_number: u64 = e.prng().gen_range(0..256);
*byte = rand_number as u8;
}

random_bytes
}

fn concat_did_uri(e: &Env, did_method: &String, method_specific_id: &[u8]) -> String {
let prefix = String::from_slice(e, "did:");
let prefix = String::from_str(e, "did:");
let prefix_len = prefix.len() as usize;

let did_method_len = did_method.len() as usize;
Expand All @@ -58,5 +59,5 @@ fn concat_did_uri(e: &Env, did_method: &String, method_specific_id: &[u8]) -> St
msi_bytes.copy_into_slice(&mut slice[did_uri_len..did_uri_len + msi_len]);
let str_did_uri = core::str::from_utf8(slice[..did_uri_len + msi_len].as_ref()).unwrap();

String::from_slice(e, str_did_uri)
String::from_str(e, str_did_uri)
}
16 changes: 8 additions & 8 deletions src/test/contract.rs
Original file line number Diff line number Diff line change
Expand Up @@ -167,10 +167,10 @@ fn test_update_context() {

let new_context = vec![
&env,
String::from_slice(&env, "https://www.w3.org/ns/did/v1"),
String::from_slice(&env, "https://w3id.org/security/suites/ed25519-2020/v1"),
String::from_slice(&env, "https://w3id.org/security/suites/x25519-2020/v1"),
String::from_slice(&env, "https://www.example.com/context/v1"),
String::from_str(&env, "https://www.w3.org/ns/did/v1"),
String::from_str(&env, "https://w3id.org/security/suites/ed25519-2020/v1"),
String::from_str(&env, "https://w3id.org/security/suites/x25519-2020/v1"),
String::from_str(&env, "https://www.example.com/context/v1"),
];

contract.update_did(
Expand Down Expand Up @@ -235,10 +235,10 @@ fn test_update_verification_methods() {
let new_verification_methods = vec![
&env,
VerificationMethodEntry {
id: String::from_slice(&env, "keys-1"),
id: String::from_str(&env, "keys-1"),
type_: VerificationMethodType::Ed25519VerificationKey2020,
controller: String::from_slice(&env, ""),
public_key_multibase: String::from_slice(
controller: String::from_str(&env, ""),
public_key_multibase: String::from_str(
&env,
"z6MkgpAN9rsVPXJ6DrrvxcsGzKwjdkVdvjNtbQsRiLfsqmuQ",
),
Expand Down Expand Up @@ -350,7 +350,7 @@ fn test_update_did_with_invalid_admin() {
&services,
);

let invalid_admin = Address::random(&env);
let invalid_admin = Address::generate(&env);
let new_services = vec![&env];

contract.update_did(
Expand Down
6 changes: 3 additions & 3 deletions src/test/did_uri.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,16 @@ use soroban_sdk::{Env, String};
#[test]
fn test_concat_fragment() {
let e: Env = Default::default();
let did_uri = String::from_slice(
let did_uri = String::from_str(
&e,
"did:chaincerts:zEYJrMxWigf9boyeJMTRN4Ern8DJMoCXaLK77pzQmxVjf",
);
let id = String::from_slice(&e, "chaincerts");
let id = String::from_str(&e, "chaincerts");
let result = did_uri::concat_fragment(&e, &did_uri, &id);

assert_eq!(
result as String,
String::from_slice(
String::from_str(
&e,
"did:chaincerts:zEYJrMxWigf9boyeJMTRN4Ern8DJMoCXaLK77pzQmxVjf#chaincerts"
)
Expand Down
32 changes: 16 additions & 16 deletions src/test/setup.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,21 +21,21 @@ impl<'a> DIDContractTest<'a> {
pub fn setup() -> Self {
let env: Env = Default::default();
env.mock_all_auths();
let admin = Address::random(&env);
let did_method = String::from_slice(&env, "chaincerts");
let admin = Address::generate(&env);
let did_method = String::from_str(&env, "chaincerts");
let context = vec![
&env,
String::from_slice(&env, "https://www.w3.org/ns/did/v1"),
String::from_slice(&env, "https://w3id.org/security/suites/ed25519-2020/v1"),
String::from_slice(&env, "https://w3id.org/security/suites/x25519-2020/v1"),
String::from_str(&env, "https://www.w3.org/ns/did/v1"),
String::from_str(&env, "https://w3id.org/security/suites/ed25519-2020/v1"),
String::from_str(&env, "https://w3id.org/security/suites/x25519-2020/v1"),
];
let verification_methods = vec![
&env,
VerificationMethodEntry {
id: String::from_slice(&env, "keys-1"),
id: String::from_str(&env, "keys-1"),
type_: VerificationMethodType::Ed25519VerificationKey2020,
controller: String::from_slice(&env, ""),
public_key_multibase: String::from_slice(
controller: String::from_str(&env, ""),
public_key_multibase: String::from_str(
&env,
"z6MkgpAN9rsVPXJ6DrrvxcsGzKwjdkVdvjNtbQsRiLfsqmuQ",
),
Expand All @@ -47,20 +47,20 @@ impl<'a> DIDContractTest<'a> {
],
},
VerificationMethodEntry {
id: String::from_slice(&env, "keys-2"),
id: String::from_str(&env, "keys-2"),
type_: VerificationMethodType::X25519KeyAgreementKey2020,
controller: String::from_slice(&env, ""),
public_key_multibase: String::from_slice(
controller: String::from_str(&env, ""),
public_key_multibase: String::from_str(
&env,
"z6LSnL6WNE3cqZyWBqh9JTQ3DwWNNvXuNVD8oKZL8jdFyuWN",
),
verification_relationships: vec![&env, VerificationRelationship::KeyAgreement],
},
VerificationMethodEntry {
id: String::from_slice(&env, "keys-3"),
id: String::from_str(&env, "keys-3"),
type_: VerificationMethodType::Ed25519VerificationKey2020,
controller: String::from_slice(&env, "did:chaincerts:ujonoldr6vfinvl3a32su5lw"),
public_key_multibase: String::from_slice(
controller: String::from_str(&env, "did:chaincerts:ujonoldr6vfinvl3a32su5lw"),
public_key_multibase: String::from_str(
&env,
"z6MkkD6nsbeFUQ28G5D7gPaAJgMk2o7SNQeepaZvf5Tbpjy6",
),
Expand All @@ -74,9 +74,9 @@ impl<'a> DIDContractTest<'a> {
let services = vec![
&env,
Service {
id: String::from_slice(&env, "chaincerts"),
id: String::from_str(&env, "chaincerts"),
type_: ServiceType::LinkedDomains,
service_endpoint: String::from_slice(&env, "https://chaincerts.co"),
service_endpoint: String::from_str(&env, "https://chaincerts.co"),
},
];

Expand Down

0 comments on commit 143d91e

Please sign in to comment.