stacks-node.yaml 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. ---
  2. apiVersion: v1
  3. kind: ConfigMap
  4. metadata:
  5. name: stacks-node-config
  6. data:
  7. stacks-node.toml: |
  8. # stacks-node hacknet miner config
  9. # event observers:
  10. # - stacks-signer
  11. [node]
  12. name = "${MINER_NAME}"
  13. rpc_bind = "0.0.0.0:20443"
  14. p2p_bind = "0.0.0.0:20444"
  15. prometheus_bind = "0.0.0.0:9153"
  16. data_url = "http://${STACKS_NODE_IP}:20443"
  17. p2p_address = "${STACKS_NODE_IP}:20443"
  18. working_dir = "/data/chainstate"
  19. seed = "${MINER_SEED}"
  20. local_peer_seed = "${MINER_SEED}"
  21. miner = true
  22. stacker = true
  23. wait_time_for_microblocks = 0
  24. mine_microblocks = false
  25. use_test_genesis_chainstate = true
  26. pox_sync_sample_secs = 0
  27. wait_time_for_blocks = 200
  28. microblock_frequency = 1000
  29. txindex = true
  30. fault_injection_block_push_fail_probability = ${BLOCK_PUSH_FAIL_PROBABILITY}
  31. [miner]
  32. first_attempt_time_ms = 180_000
  33. subsequent_attempt_time_ms = 360_000
  34. microblock_attempt_time_ms = 10
  35. mining_key = "${MINER_SEED}"
  36. activated_vrf_key_path = "/data/chainstate/saved_vrf_key.json"
  37. block_reward_recipient = "${REWARD_RECIPIENT}"
  38. [connection_options]
  39. public_ip_address = "${POD_IP}:20444"
  40. auth_token = "12345"
  41. timeout = 15
  42. connect_timeout = 15
  43. handshake_timeout = 15
  44. idle_timeout = 15
  45. dns_timeout = 15
  46. private_neighbors = true
  47. [burnchain]
  48. rpc_port = ${BITCOIN_RPC_PORT}
  49. peer_port = ${BITCOIN_PEER_PORT}
  50. pox_prepare_length = ${POX_PREPARE_LENGTH}
  51. pox_reward_length = ${POX_REWARD_LENGTH}
  52. chain = "bitcoin"
  53. mode = "nakamoto-neon"
  54. poll_time_secs = 1
  55. magic_bytes = "T3"
  56. burn_fee_cap = 20_000
  57. peer_host = "${BITCOIN_PEER_HOST}"
  58. username = "${BITCOIN_RPC_USER}"
  59. password = "${BITCOIN_RPC_PASS}"
  60. wallet_name = "${BITCOIN_WALLET}"
  61. # Add stacks-signer as an event observer
  62. [[events_observer]]
  63. endpoint = "${SIGNER_HOST}:${SIGNER_PORT}"
  64. events_keys = ["stackerdb", "block_proposal", "burn_blocks"]
  65. timeout_ms = 10_000
  66. [[burnchain.epochs]]
  67. start_height = 0
  68. epoch_name = "1.0"
  69. [[burnchain.epochs]]
  70. start_height = ${STACKS_20_HEIGHT}
  71. epoch_name = "2.0"
  72. [[burnchain.epochs]]
  73. start_height = ${STACKS_2_05_HEIGHT}
  74. epoch_name = "2.05"
  75. [[burnchain.epochs]]
  76. start_height = ${STACKS_21_HEIGHT}
  77. epoch_name = "2.1"
  78. [[burnchain.epochs]]
  79. start_height = ${STACKS_22_HEIGHT}
  80. epoch_name = "2.2"
  81. [[burnchain.epochs]]
  82. start_height = ${STACKS_23_HEIGHT}
  83. epoch_name = "2.3"
  84. [[burnchain.epochs]]
  85. start_height = ${STACKS_24_HEIGHT}
  86. epoch_name = "2.4"
  87. [[burnchain.epochs]]
  88. start_height = ${STACKS_25_HEIGHT}
  89. epoch_name = "2.5"
  90. [[burnchain.epochs]]
  91. start_height = ${STACKS_30_HEIGHT}
  92. epoch_name = "3.0"
  93. [[burnchain.epochs]]
  94. start_height = ${STACKS_31_HEIGHT}
  95. epoch_name = "3.1"
  96. [[burnchain.epochs]]
  97. start_height = ${STACKS_32_HEIGHT}
  98. epoch_name = "3.2"
  99. [[ustx_balance]]
  100. # PRIVATE KEY 714a5bf161a680ebb2670c5ea6e8bcd75f299eae234412af0cf12d21e11ae09901
  101. address = "ST5ZW3BC07M4P27KFJ6JJ6PKTB1NW79SH0BVYB3W" # Stacks integration test account
  102. amount = 10000000000000000
  103. [[ustx_balance]]
  104. address = "ST2SBXRBJJTH7GV5J93HJ62W2NRRQ46XYBK92Y039" # Deployer Account
  105. amount = 10000000000000000
  106. [[ustx_balance]]
  107. # This is a 2-3 multi-sig address controlled using the above three
  108. # addresses. The resulting multi-sig address below was created using the SignerWallet struct.
  109. address = "SN3R84XZYA63QS28932XQF3G1J8R9PC3W76P9CSQS"
  110. amount = 10000000000000000
  111. [[ustx_balance]]
  112. address = "ST24VB7FBXCBV6P0SRDSPSW0Y2J9XHDXNHW9Q8S7H" # Signer 1 Account
  113. amount = 10000000000000000
  114. [[ustx_balance]]
  115. address = "ST2XAK68AR2TKBQBFNYSK9KN2AY9CVA91A7CSK63Z" # Signer 2 Account
  116. amount = 10000000000000000
  117. [[ustx_balance]]
  118. address = "ST1J9R0VMA5GQTW65QVHW1KVSKD7MCGT27X37A551" # Signer 3 Account
  119. amount = 10000000000000000
  120. [[ustx_balance]]
  121. address = "ST1YEHRRYJ4GF9CYBFFN0ZVCXX1APSBEEQ5KEDN7M" # Stacker 1
  122. amount = 10000000000000000
  123. [[ustx_balance]]
  124. address = "ST1WNJTS9JM1JYGK758B10DBAMBZ0K23ADP392SBV" # Stacker 2
  125. amount = 10000000000000000
  126. [[ustx_balance]]
  127. address = "ST1MDWBDVDGAANEH9001HGXQA6XRNK7PX7A7X8M6R" # Stacker 3
  128. amount = 10000000000000000
  129. [[ustx_balance]]
  130. address = "ST332DWHNM323264X869MKXFZABSE5WZ60EA07TJ1" # Tester 1
  131. amount = 10000000000000000
  132. [[ustx_balance]]
  133. address = "ST2FY5WGSFA209NFHDT08NCB8Y9J3P1H19YR2D674" # Tester 2
  134. amount = 10000000000000000
  135. [[ustx_balance]]
  136. address = "ST3SW0AXHXFDHGQY2XMMDHN6T7VPY395WS7ZRGQCD" # Tester 3
  137. amount = 10000000000000000
  138. ---
  139. # Stacks Miner 1 Service
  140. apiVersion: v1
  141. kind: Service
  142. metadata:
  143. name: stacks-node
  144. labels:
  145. app: stacks-node
  146. spec:
  147. ports:
  148. - name: rpc
  149. port: 20443
  150. targetPort: 20443
  151. protocol: TCP
  152. - name: p2p
  153. port: 20444
  154. targetPort: 20444
  155. protocol: TCP
  156. - name: prometheus
  157. port: 9153
  158. targetPort: 9153
  159. protocol: TCP
  160. selector:
  161. app: stacks-node
  162. ---
  163. # Stacks Node StatefulSet
  164. apiVersion: apps/v1
  165. kind: StatefulSet
  166. metadata:
  167. name: stacks-node
  168. labels:
  169. app: stacks-node
  170. spec:
  171. serviceName: stacks-node
  172. replicas: 1
  173. selector:
  174. matchLabels:
  175. app: stacks-node
  176. template:
  177. metadata:
  178. labels:
  179. app: stacks-node
  180. spec:
  181. containers:
  182. - name: stacks-node
  183. image: stacks-node
  184. securityContext:
  185. runAsUser: 0
  186. ports:
  187. - containerPort: 20443
  188. name: rpc
  189. protocol: TCP
  190. - containerPort: 20444
  191. name: p2p
  192. protocol: TCP
  193. - containerPort: 9153
  194. name: prometheus
  195. protocol: TCP
  196. volumeMounts:
  197. - name: config-template
  198. mountPath: /data/config.toml.in
  199. subPath: stacks-node.toml
  200. - name: chainstate
  201. mountPath: /data/chainstate
  202. env:
  203. - name: POD_IP
  204. valueFrom:
  205. fieldRef:
  206. fieldPath: status.podIP
  207. - name: MINER_NAME
  208. value: "stacks-node"
  209. - name: STACKS_NODE_IP
  210. valueFrom:
  211. fieldRef:
  212. fieldPath: status.podIP
  213. - name: MINER_SEED
  214. value: "23ad69119000a241706486b9349556bdc6dfabdf9d9131b153a57c6b0330fb0d01"
  215. - name: REWARD_RECIPIENT
  216. value: "ST1XVSVQN0KP5SDYFNT8E5TXWVW0XZVQEDBMCJ3XM"
  217. - name: BITCOIN_PEER_HOST
  218. value: "bitcoin-node"
  219. - name: BITCOIN_RPC_PORT
  220. value: "18443"
  221. - name: BITCOIN_PEER_PORT
  222. value: "18444"
  223. - name: BITCOIN_RPC_USER
  224. value: "hacknet"
  225. - name: BITCOIN_RPC_PASS
  226. value: "hacknet"
  227. - name: BITCOIN_WALLET
  228. value: "stacks-miner-1"
  229. - name: SIGNER_HOST
  230. value: "stacks-signer"
  231. - name: SIGNER_PORT
  232. value: "30000"
  233. - name: BLOCK_PUSH_FAIL_PROBABILITY
  234. value: "0"
  235. - name: STACKS_20_HEIGHT
  236. value: "0"
  237. - name: STACKS_2_05_HEIGHT
  238. value: "203"
  239. - name: STACKS_21_HEIGHT
  240. value: "204"
  241. - name: STACKS_22_HEIGHT
  242. value: "206"
  243. - name: STACKS_23_HEIGHT
  244. value: "207"
  245. - name: STACKS_24_HEIGHT
  246. value: "208"
  247. - name: STACKS_25_HEIGHT
  248. value: "209"
  249. - name: STACKS_30_HEIGHT
  250. value: "232"
  251. - name: STACKS_31_HEIGHT
  252. value: "233"
  253. - name: STACKS_32_HEIGHT
  254. value: "234"
  255. - name: POX_PREPARE_LENGTH
  256. value: "5"
  257. - name: POX_REWARD_LENGTH
  258. value: "20"
  259. command:
  260. - /bin/bash
  261. - -c
  262. - |
  263. cd /data/
  264. set -e
  265. perl -pe 's/\$\{?([A-Za-z_][A-Za-z0-9_]*)\}?/$ENV{$1}/ge' < config.toml.in > config.toml
  266. exec stacks-node start --config config.toml 2>&1
  267. readinessProbe:
  268. httpGet:
  269. path: /v2/info
  270. port: 20443
  271. initialDelaySeconds: 30
  272. periodSeconds: 10
  273. timeoutSeconds: 5
  274. successThreshold: 1
  275. failureThreshold: 10
  276. livenessProbe:
  277. httpGet:
  278. path: /v2/info
  279. port: 20443
  280. initialDelaySeconds: 60
  281. periodSeconds: 30
  282. timeoutSeconds: 10
  283. failureThreshold: 3
  284. resources:
  285. requests:
  286. memory: "4Gi"
  287. cpu: "2000m"
  288. limits:
  289. memory: "8Gi"
  290. cpu: "4000m"
  291. volumes:
  292. - name: config-template
  293. configMap:
  294. name: stacks-node-config
  295. - name: config
  296. emptyDir: {}
  297. - name: chainstate
  298. emptyDir: {}