4
4
from typing import Dict , Optional , Union
5
5
6
6
from aleph_message .models import Chain
7
+ from aleph_message .models .execution .environment import HypervisorType
7
8
from pydantic import BaseSettings , Field
8
9
9
10
from aleph .sdk .types import ChainInfo
@@ -16,7 +17,7 @@ class Settings(BaseSettings):
16
17
# do an ugly and insecure write and read from disk to this file.
17
18
PRIVATE_KEY_FILE : Path = Field (
18
19
default = Path ("ethereum.key" ),
19
- description = "Path to the private key used to sign messages" ,
20
+ description = "Path to the private key used to sign messages and transactions " ,
20
21
)
21
22
22
23
PRIVATE_MNEMONIC_FILE : Path = Field (
@@ -31,16 +32,51 @@ class Settings(BaseSettings):
31
32
REMOTE_CRYPTO_HOST : Optional [str ] = None
32
33
REMOTE_CRYPTO_UNIX_SOCKET : Optional [str ] = None
33
34
ADDRESS_TO_USE : Optional [str ] = None
35
+ HTTP_REQUEST_TIMEOUT = 10.0
34
36
37
+ DEFAULT_CHANNEL : str = "ALEPH-CLOUDSOLUTIONS"
35
38
DEFAULT_RUNTIME_ID : str = (
36
- "f873715dc2feec3833074bd4b8745363a0e0093746b987b4c8191268883b2463" # Debian 12 official runtime
39
+ "63f07193e6ee9d207b7d1fcf8286f9aee34e6f12f101d2ec77c1229f92964696"
37
40
)
41
+ DEBIAN_11_ROOTFS_ID : str = (
42
+ "887957042bb0e360da3485ed33175882ce72a70d79f1ba599400ff4802b7cee7"
43
+ )
44
+ DEBIAN_12_ROOTFS_ID : str = (
45
+ "6e30de68c6cedfa6b45240c2b51e52495ac6fb1bd4b36457b3d5ca307594d595"
46
+ )
47
+ UBUNTU_22_ROOTFS_ID : str = (
48
+ "77fef271aa6ff9825efa3186ca2e715d19e7108279b817201c69c34cedc74c27"
49
+ )
50
+ DEBIAN_11_QEMU_ROOTFS_ID : str = (
51
+ "f7e68c568906b4ebcd3cd3c4bfdff96c489cd2a9ef73ba2d7503f244dfd578de"
52
+ )
53
+ DEBIAN_12_QEMU_ROOTFS_ID : str = (
54
+ "b6ff5c3a8205d1ca4c7c3369300eeafff498b558f71b851aa2114afd0a532717"
55
+ )
56
+ UBUNTU_22_QEMU_ROOTFS_ID : str = (
57
+ "4a0f62da42f4478544616519e6f5d58adb1096e069b392b151d47c3609492d0c"
58
+ )
59
+
60
+ DEFAULT_CONFIDENTIAL_FIRMWARE : str = (
61
+ "ba5bb13f3abca960b101a759be162b229e2b7e93ecad9d1307e54de887f177ff"
62
+ )
63
+ DEFAULT_CONFIDENTIAL_FIRMWARE_HASH : str = (
64
+ "89b76b0e64fe9015084fbffdf8ac98185bafc688bfe7a0b398585c392d03c7ee"
65
+ )
66
+
67
+ DEFAULT_ROOTFS_SIZE : int = 20_480
68
+ DEFAULT_INSTANCE_MEMORY : int = 2_048
69
+ DEFAULT_HYPERVISOR : HypervisorType = HypervisorType .qemu
70
+
38
71
DEFAULT_VM_MEMORY : int = 256
39
72
DEFAULT_VM_VCPUS : int = 1
40
73
DEFAULT_VM_TIMEOUT : float = 30.0
41
74
42
75
CODE_USES_SQUASHFS : bool = which ("mksquashfs" ) is not None # True if command exists
43
76
77
+ VM_URL_PATH = "https://aleph.sh/vm/{hash}"
78
+ VM_URL_HOST = "https://{hash_base32}.aleph.sh"
79
+
44
80
# Web3Provider settings
45
81
TOKEN_DECIMALS = 18
46
82
TX_TIMEOUT = 60 * 3
@@ -78,6 +114,17 @@ class Settings(BaseSettings):
78
114
active = False ,
79
115
),
80
116
}
117
+ # Add all placeholders to allow easy dynamic setup of CHAINS
118
+ CHAINS_SEPOLIA_ACTIVE : Optional [bool ]
119
+ CHAINS_ETH_ACTIVE : Optional [bool ]
120
+ CHAINS_AVAX_ACTIVE : Optional [bool ]
121
+ CHAINS_BASE_ACTIVE : Optional [bool ]
122
+ CHAINS_BSC_ACTIVE : Optional [bool ]
123
+ CHAINS_SEPOLIA_RPC : Optional [str ]
124
+ CHAINS_ETH_RPC : Optional [str ]
125
+ CHAINS_AVAX_RPC : Optional [str ]
126
+ CHAINS_BASE_RPC : Optional [str ]
127
+ CHAINS_BSC_RPC : Optional [str ]
81
128
82
129
# Dns resolver
83
130
DNS_IPFS_DOMAIN = "ipfs.public.aleph.sh"
@@ -115,3 +162,13 @@ class Config:
115
162
settings .PRIVATE_MNEMONIC_FILE = Path (
116
163
settings .CONFIG_HOME , "private-keys" , "substrate.mnemonic"
117
164
)
165
+
166
+ # Update CHAINS settings and remove placeholders
167
+ CHAINS_ENV = [(key [7 :], value ) for key , value in settings if key .startswith ("CHAINS_" )]
168
+ for fields , value in CHAINS_ENV :
169
+ if value :
170
+ chain , field = fields .split ("_" , 1 )
171
+ chain = chain if chain not in Chain .__members__ else Chain [chain ]
172
+ field = field .lower ()
173
+ settings .CHAINS [chain ].__dict__ [field ] = value
174
+ settings .__delattr__ (f"CHAINS_{ fields } " )
0 commit comments