whisky_common/data/
credentials.rs

1use serde_json::{json, Value};
2
3use super::{byte_string, con_str0, con_str1};
4
5pub fn payment_pub_key_hash(pub_key_hash: &str) -> Value {
6    byte_string(pub_key_hash)
7}
8
9pub fn pub_key_hash(pub_key_hash: &str) -> Value {
10    byte_string(pub_key_hash)
11}
12
13pub fn maybe_staking_hash(stake_credential: &str, is_script_stake_key: bool) -> Value {
14    if stake_credential.is_empty() {
15        con_str1(json!([]))
16    } else if is_script_stake_key {
17        con_str0(vec![con_str0(vec![con_str1(vec![byte_string(
18            stake_credential,
19        )])])])
20    } else {
21        con_str0(vec![con_str0(vec![con_str0(vec![byte_string(
22            stake_credential,
23        )])])])
24    }
25}
26
27pub fn pub_key_address(
28    bytes: &str,
29    stake_credential: Option<&str>,
30    is_script_stake_key: bool,
31) -> Value {
32    con_str0(vec![
33        con_str0(vec![byte_string(bytes)]),
34        maybe_staking_hash(stake_credential.unwrap_or(""), is_script_stake_key),
35    ])
36}
37
38pub fn script_address(
39    bytes: &str,
40    stake_credential: Option<&str>,
41    is_script_stake_key: bool,
42) -> Value {
43    con_str0(vec![
44        con_str1(vec![byte_string(bytes)]),
45        maybe_staking_hash(stake_credential.unwrap_or(""), is_script_stake_key),
46    ])
47}