1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/*
 * Copyright 2020 Nuclei Studio OÜ
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

use governance_os_pallet_organizations::{Module as OrganizationsModule, OrganizationsCounter};
use governance_os_primitives::AccountId;
use governance_os_runtime::Runtime;
use sp_core::crypto::Ss58AddressFormat;

pub fn org_id_for(counter: OrganizationsCounter) -> AccountId {
    OrganizationsModule::<Runtime>::org_id_for(counter)
}

/// Return the address of the "core" dOrg which should be created during genesis
/// or later. Will be granted root role and admin access to the core currency
/// primitives by most of our genesis generation functions. Used to take network
/// wide decisions in a decentralized manner!
pub fn core_org() -> AccountId {
    org_id_for(0) // 5EYCAe5gvgRHjJhnqvRtXTXVJqXWesQMcq8p5d2jmF89z84d
}

/// Reconfigure the core crypto / ss58 crates to use our own identifier.
pub fn set_default_ss58_version() {
    // Once we start having different networks we will want to be smart about it
    // and default to different formats.

    // Once upstream releases a new version default with our id replace to the hardcoded
    // value there.
    let ss58_version = Ss58AddressFormat::SubstrateAccount;

    sp_core::crypto::set_default_ss58_version(ss58_version);
}