[{"data":1,"prerenderedAt":2716},["ShallowReactive",2],{"sanity-0vx860qANOB8CccsDGE2gHIvftsFnrZIEPQEzBiaaYg":3,"sanity-M3ecfVdT1haLVC6W5tbM4X39CNYacavIuqPq8YoIHrc":431,"sanity-tgC2RP5ZxLbzyCOYa1vsappZt2xnzdBeG4kqfji1JGo":437},{"data":4},{"bannerText":5,"bannerUpdatedAt":34,"menuPrimaryNav":35,"menuPrimaryNavSecond":28,"menuSecondaryNav":147,"metrics":28,"newsletterErrorMessage":329,"newsletterInstructions":330,"newsletterPlaceholder":331,"newsletterSubmitButtonLabel":332,"newsletterSuccessMessage":333,"rightsText":28,"socials":334,"socialsListLabel":426,"swapButton":427},[6],{"_key":7,"_type":8,"children":9,"markDefs":24,"style":33},"dc1bc89786a7","block",[10,15,20],{"_key":11,"_type":12,"marks":13,"text":14},"c7ec248ea4c9","span",[],"Trading is temporarily paused. More info ",{"_key":16,"_type":12,"marks":17,"text":19},"49f05f0c531d",[18],"da82ed6d54a6","here",{"_key":21,"_type":12,"marks":22,"text":23},"66d707ed0430",[],". THORChain has no active refund, airdrop, or compensation program. Be cautious of fraudulent websites impersonating the protocol and report them back to us.",[25],{"_key":18,"_type":26,"link":27},"custom-link",{"anchor":28,"getParameters":28,"isInternal":29,"openInNewTab":28,"page":30,"title":28},null,true,{"slug":31,"type":32},"thorchain-exploit-report-1","article","normal","2026-06-05T04:54:15Z",[36,55,69,82,95,108,121,134],{"icon":37,"link":39,"media":45},{"isCustom":29,"raw":38},"\u003Csvg width=\"100\" height=\"149\" viewBox=\"0 0 100 149\" fill=\"none\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n\u003Ccircle cx=\"49.9834\" cy=\"98.2666\" r=\"49.9834\" fill=\"#FAFAFA\"\u002F>\n\u003Ccircle cx=\"49.9834\" cy=\"49.9834\" r=\"49.9834\" fill=\"#33FF99\"\u002F>\n\u003C\u002Fsvg>\n",{"anchor":28,"getParameters":28,"isInternal":29,"label":40,"openInNewTab":28,"page":41,"title":28,"url":44},"Swap",{"slug":42,"type":43},"swap","page","https:\u002F\u002Fswap.thorchain.org\u002Fswap",{"image":46,"lottie":52,"type":54},{"alt":47,"assetId":48,"caption":28,"crop":28,"height":49,"hotspot":28,"lqip":50,"width":51},"","image-2be7810d802cf6b01bae376ec68083be67c3df8b-249x217-png",217,"data:image\u002Fpng;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAACXBIWXMAAAsTAAALEwEAmpwYAAAC2ElEQVR4nJ2T30tTYRjHNzMh+31TDe8iioRy58wiKq0MEyK6qv6AoCCMfhFBEJ2LAhG6iaIQt50zf0ULg0zn5nRutbZRmbXMQlqu\u002FNGF0Sws5znPc75x\u002FHG1NO0LDy+8vO\u002Fn+bwPvCbTfAIpS4KUNa+zcwYw21C1OB+3l21FzdI9kLKNvf8AmcyGkQER9OrNgmY\u002FLGquQ4Wwb7KhKdckTdrOEwyY8+HOKYCSJ8JZJrJSaWM5ILLSLkK5LkDeb0OtJR9Szj9tj8K9aDfqV2+DvVCEclZk+ZHISlJg57jA8m8RSkJkpbEQcnkhXEIB5FUmuBfNarZl9M5qq1Z90MrKXYGVuMDyD4GdJLCTBXLoAjlIYHlUZFe3leVbVjhL16NqZaYppuaxA0peEdVd3M0N8W3sSlsNENt1gR2YLDLKydu5ZryI618VU92ZItRa\u002Fvp0AOZG9Foc9OZ8BUd7jrNH3ct1usgOWCfLDhs7UUL1+klunaik6GsZb8obkFhr3M2ATa95KTV96aOaeu+jfu06h3GEG7GTa7CLXTjGD1HBEbRTUv2kjr79oarnAFgygDPQZC8snxN0fnBQ6xlOpdV4ekRvoHe4zEFc4SDuUy960t\u002F04VR6YmiIupMJKk8kkGloMk1ttD9GXjhAF7qi1N0bp\u002FGBQY37f44hro7grTqC5M8x\u002FcsA8bs4\u002FX4R4RdPO+l0qHVsdkO\u002FHyuDLVppyKvdDAeoqytGqb73RF+\u002FavrwMOl9H0h7GaXv4QA\u002FD\u002Fn4RtCr7QuHsfyvwGlolgH1NU9YOzzqqWAbPYiGKNEdo19dMfoVe8J9wTa+19FCJ\u002Fwt2BLz6CskCXP\u002FcaOb242czmas6\u002FBpJQGvdu2Jn72hNvYE2+hqyIfiZz6sqarC4lnNTJlYs9H5ZRNy\u002FS3pjYFWrazDox3wesc3RCJYYrxkZu4LimHQ2Ynspqah3IgbSyQJ2Quwmj2G7T9nNZ0\u002F2NEWuqs0czUAAAAASUVORK5CYII=",249,{"url":53},"https:\u002F\u002Fcdn.sanity.io\u002Ffiles\u002F355nlzcp\u002Fproduction\u002F2f04a6f9a8bbc129979c437905f8a4f3fcd36d85.json","lottie",{"icon":56,"link":58,"media":63},{"isCustom":29,"raw":57},"\u003Csvg width=\"141\" height=\"150\" viewBox=\"0 0 141 150\" fill=\"none\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n\u003Cpath d=\"M66.8085 59.1811C69.0743 57.793 71.9271 57.793 74.1929 59.1811L137.624 98.0414C142.125 100.799 142.125 107.341 137.624 110.099L74.1929 148.959C71.9271 150.347 69.0743 150.347 66.8085 148.959L3.37782 110.099C-1.12402 107.341 -1.12401 100.799 3.37783 98.0414L66.8085 59.1811Z\" fill=\"#00CCFF\"\u002F>\n\u003Cpath d=\"M66.8085 32.8102C69.0743 31.422 71.9271 31.422 74.1929 32.8102L137.624 71.6705C142.125 74.4285 142.125 80.9697 137.624 83.7277L74.1929 122.588C71.9271 123.976 69.0743 123.976 66.8085 122.588L3.37782 83.7277C-1.12402 80.9697 -1.12401 74.4285 3.37783 71.6705L66.8085 32.8102Z\" fill=\"white\"\u002F>\n\u003Cpath d=\"M66.8071 1.0411C69.0729 -0.347034 71.9257 -0.347034 74.1915 1.0411L137.622 39.9014C142.124 42.6594 142.124 49.2006 137.622 51.9586L74.1915 90.8189C71.9257 92.207 69.0729 92.207 66.8071 90.8189L3.37638 51.9586C-1.12546 49.2006 -1.12546 42.6594 3.37638 39.9014L66.8071 1.0411Z\" fill=\"#33FF99\"\u002F>\n\u003C\u002Fsvg>\n",{"anchor":28,"getParameters":28,"isInternal":29,"label":59,"openInNewTab":28,"page":60,"title":28,"url":62},"Integrate",{"slug":61,"type":43},"integrate","http:\u002F\u002Fgoogle.fr",{"image":64,"lottie":67,"type":54},{"alt":47,"assetId":65,"caption":28,"crop":28,"height":49,"hotspot":28,"lqip":66,"width":51},"image-442ea594fc28e849a79d248439f25021504e3ed4-249x217-png","data:image\u002Fpng;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAACXBIWXMAAAsTAAALEwEAmpwYAAACfElEQVR4nK3UX0hTURwH8LPdOxSdrggUghSrh8gmXQcR9MeHyHwyEFT689RTD1FPPe+pnnqxB8Ey01UY96HAJCWCqIc95Oxuc3\u002FuvWzezDaxrTV1bWz3nPONmUGQf8nfy3n78P19z+EQstUAFrIrA1ja8E48zPsq2uAW3XBb\u002FwOThSMY2ecsDrVK5uA5CQ9bnOjfS+AWd54YsiBhcL+EkV6JDQ1K7NGkyxzqdxafdx9Y9B0iCVQRwErIdmDA4sJAlQue8y54Xkjsceq4OZx3FuSFpsz7t7WzX9yC37xAfPkG8lqv2AIjlnJPLgw4WrnnSisb8Ut0mDXnZdaw4GWO+HzOpuZjYoi+sgbpDaKiicgQNgUJ3NYT\u002FEntKYxePsk9imQO84OZCe7Q5mALFJgQLFEhSJfFGTohhMwO4ltdf+PVAVhkhOx3qLfnFt5MXzRf8qPpD7wmmoL4qQRRKXLRX2KC35y2ztBeEkUNca\u002FevmVdDIA1zXltAiuXpnlSeWpG+PWMCqeagV0pwqaUuF0psjql8LHR\u002F7OrfgHVGyb8AwJwALha4jSQpnnmzX7nd\u002FU02v1ZtCg53h5YojcDKe+9wNfOAV+iCtsAqwF0ABjnlP0oLC2b8dgcHwsa\u002FEFgno\u002FPfGaRcHzqW1jtRihk3xD8CxYANAC4BmAU2WyEzhrLK1GNpiMay0U0SlVtiqpqTyoardkSXENtAOpRwmm6mLrN4sYk0\u002FUk0\u002FQc1\u002FUENO0ZNO0sDKNyW+AaaoWBSiSTjTwW64Kq32eqOgZV70M02olYrE6W5U3e4fpouVcBhrGnGIkcQzh8BuFwM+JxB3aK\u002FZP2d7flKsrn7nxp24F+AWDE1D2IfDaeAAAAAElFTkSuQmCC",{"url":68},"https:\u002F\u002Fcdn.sanity.io\u002Ffiles\u002F355nlzcp\u002Fproduction\u002Fc699ba1aa0682709d7c6e535d53be7084f6929d9.json",{"icon":70,"link":72,"media":76},{"isCustom":29,"raw":71},"\u003Csvg width=\"143\" height=\"137\" viewBox=\"0 0 143 137\" fill=\"none\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n\u003Ccircle cx=\"12.6266\" cy=\"12.6266\" r=\"12.6266\" transform=\"matrix(-1 -8.74228e-08 -8.74228e-08 1 142.12 110.995)\" fill=\"white\"\u002F>\n\u003Ccircle cx=\"12.6266\" cy=\"12.6266\" r=\"12.6266\" transform=\"matrix(-1 -8.74228e-08 -8.74228e-08 1 25.2534 0)\" fill=\"white\"\u002F>\n\u003Ccircle cx=\"12.6266\" cy=\"12.6266\" r=\"12.6266\" transform=\"matrix(-1 -8.74228e-08 -8.74228e-08 1 25.2534 110.995)\" fill=\"white\"\u002F>\n\u003Ccircle cx=\"12.6266\" cy=\"12.6266\" r=\"12.6266\" transform=\"matrix(-1 -8.74228e-08 -8.74228e-08 1 142.12 0)\" fill=\"white\"\u002F>\n\u003Ccircle cx=\"70.7652\" cy=\"68.419\" r=\"38.4672\" transform=\"rotate(-180 70.7652 68.419)\" fill=\"#00CCFF\"\u002F>\n\u003C\u002Fsvg>\n",{"anchor":28,"getParameters":28,"isInternal":29,"label":73,"openInNewTab":28,"page":74,"title":28,"url":62},"Ecosystem",{"slug":75,"type":43},"ecosystem",{"image":77,"lottie":80,"type":54},{"alt":47,"assetId":78,"caption":28,"crop":28,"height":49,"hotspot":28,"lqip":79,"width":51},"image-2251f76bcba98a54dcec09c6e948c96105491ec5-249x217-png","data:image\u002Fpng;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAACXBIWXMAAAsTAAALEwEAmpwYAAADJ0lEQVR4nJVU3U9SYRh\u002FEXAmGlAiGhiMDFTOOZyPBgytLppfa13k1uZFWxf9Id607tq66IYsjA+N0dZcaza6OZUrszCZEuYSSERRKwhxJODxaYfV1srTx297tuf9Pe9+7\u002Fs8z\u002Fs+CAkBkAgBiH7nYX\u002F+j4ChqtPASjogUI0gIObXvF2AgJjn+FiF+xcw4JTiMKq0wB2Nde+mlgFnc8f2jSYbDKt5n+couHXEAiMKJuSU\u002FuVmrITcCqiIogcji7ctFAwTZMnpsJSdPUx5uJveu2lnwInzsfbiHbNxa7ShksH+YiDq2AjUmXLjpra8H2sv+HQ4eE3m0kgnWR7uJsuubrLkchA7bqPp6129MT9GtOXuGwkIyvavKYAI\u002FzKpNORZrPXLxDFD4cFRc9FvwUteO1W6dYoG10m8NGLHivcIfeGhTp97ZDLkg5guyyrQUKWev4gCiPig9vNzTJd9QrVuj1Pmkr+T3B25THHu6zR4rjG77kvmwl1H6\u002FYE1fKRPcHvNWRCckFBdToo06zPEJrNyX59LmijyqPnGPAGaM6TojlPkuE8XurrWF\u002Frp8d2zdpkvzr9HNMmXxwQTBkl2BpVappsWpsZ0KafWinwDzLge0lz7iLNeXYozv2MLo+d16ZfW5tWXg2o09NmFIlUCzZFnQ7LVPE3FlVyofdQ\u002FK2tbWf8LLPn8zGcN8GAd4nmvK627Qc99fFFmyoR7lMnw1jzaqhW8IbybELRGFvAFfG4pTaSIlWpeQdWuH+R4rxXac53xVwYH2xcidprF1Ok\u002FMN7Wp2MYspMTLiG8uVlpTKZxuTL64aa+VSLbC5DHFqM21pWp7qaV6e6DsaSVtlCBq+JZY7Wx1Mm5VISkycSwl1GkY26+timURb9jKGZjA6FwSgJFbrE4XIvb5LZQieazhnRbFbPH1a\u002FtHkchcMC75AHy0rQu60G6WzejOaKBAoBjkIlO5opn6kY708VCT5WPb\u002FTjqK5wwhA4Kf8QAikaDarQCFoRi9Ag8LQiN6AqmJToK5wEWhCMZAjAMmfxX5OnwVJRRygqrIegioUCIi\u002Fc+L\u002FH2FIYO79ZR5+A0EntCzHjHt8AAAAAElFTkSuQmCC",{"url":81},"https:\u002F\u002Fcdn.sanity.io\u002Ffiles\u002F355nlzcp\u002Fproduction\u002Fbffe987c6ddbee89a1359b0d22c0bf2a91b0b597.json",{"icon":83,"link":85,"media":89},{"isCustom":29,"raw":84},"\u003Csvg width=\"150\" height=\"150\" viewBox=\"0 0 150 150\" fill=\"none\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n\u003Cpath d=\"M136.836 13.1619C128.078 4.40429 113.375 2.06162 95.5823 6.83743C77.9208 11.5782 58.144 23.1638 40.6539 40.6539C23.1638 58.144 11.5782 77.9208 6.83742 95.5823C2.0616 113.375 4.40428 128.078 13.1619 136.836C21.9195 145.594 36.6232 147.936 54.4155 143.16C72.0771 138.42 91.8538 126.834 109.344 109.344L112.463 112.464C76.5889 148.338 30.7334 160.647 10.0423 139.956C-10.6488 119.264 1.65979 73.4089 37.5343 37.5343C73.4088 1.65977 119.264 -10.6488 139.955 10.0423C160.647 30.7335 148.338 76.5889 112.463 112.464L109.344 109.344C126.834 91.8538 138.42 72.0771 143.16 54.4155C147.936 36.6232 145.594 21.9195 136.836 13.1619Z\" fill=\"url(#paint0_linear_3771_9698)\"\u002F>\n\u003Cpath d=\"M13.1722 13.1638C21.9298 4.40624 36.6335 2.06357 54.4258 6.83938C72.0873 11.5802 91.8641 23.1658 109.354 40.6558C126.844 58.1459 138.43 77.9227 143.171 95.5843C147.946 113.377 145.604 128.08 136.846 136.838C128.089 145.596 113.385 147.938 95.5926 143.162C77.931 138.422 58.1543 126.836 40.6642 109.346L37.5446 112.465C73.4192 148.34 119.275 160.649 139.966 139.957C160.657 119.266 148.348 73.4108 112.474 37.5363C76.5992 1.66172 30.7438 -10.6468 10.0526 10.0443C-10.6386 30.7354 1.67003 76.5909 37.5446 112.465L40.6642 109.346C23.1741 91.8558 11.5885 72.079 6.84771 54.4175C2.07189 36.6252 4.41454 21.9215 13.1722 13.1638Z\" fill=\"url(#paint1_linear_3771_9698)\"\u002F>\n\u003Cpath d=\"M105.739 74.8666C105.739 91.9223 91.913 105.749 74.8573 105.749C57.8015 105.749 43.9751 91.9223 43.9751 74.8666C43.9751 57.8108 57.8015 43.9844 74.8573 43.9844C91.913 43.9844 105.739 57.8108 105.739 74.8666Z\" fill=\"white\"\u002F>\n\u003Cdefs>\n\u003ClinearGradient id=\"paint0_linear_3771_9698\" x1=\"128.772\" y1=\"24.0563\" x2=\"18.396\" y2=\"120.989\" gradientUnits=\"userSpaceOnUse\">\n\u003Cstop stop-color=\"#33FF99\"\u002F>\n\u003Cstop offset=\"1\" stop-color=\"#00CCFF\"\u002F>\n\u003C\u002FlinearGradient>\n\u003ClinearGradient id=\"paint1_linear_3771_9698\" x1=\"128.782\" y1=\"24.0582\" x2=\"18.4062\" y2=\"120.991\" gradientUnits=\"userSpaceOnUse\">\n\u003Cstop stop-color=\"#33FF99\"\u002F>\n\u003Cstop offset=\"1\" stop-color=\"#00CCFF\"\u002F>\n\u003C\u002FlinearGradient>\n\u003C\u002Fdefs>\n\u003C\u002Fsvg>\n",{"anchor":28,"getParameters":28,"isInternal":29,"label":86,"openInNewTab":28,"page":87,"title":28},"Community",{"slug":88,"type":43},"community",{"image":90,"lottie":93,"type":54},{"alt":47,"assetId":91,"caption":28,"crop":28,"height":49,"hotspot":28,"lqip":92,"width":51},"image-836dbd9c989ab6f984060eaaef0abb1dd7068e0a-249x217-png","data:image\u002Fpng;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAACXBIWXMAAAsTAAALEwEAmpwYAAACT0lEQVR4nK2UzUtUURjGz9zrtzELEbMZrZEyxCQbL7kJ7BtcRFIwikVkBmKtXbUZbCFK9AcIomaL4EJUNklqdglqlxohBLOpTQQy6WROeueO5xdHRw0aZwx64IHDy+H3vNz3PVeIFAJc4n8JcAWDaEKkg+IS6k6mYMsi780zKsaf2zXWKMWmia4C1jveti7eUSI+2DVi+tcBEZa5KRNVVxNP8UyG4h2vQnbPeCjeoAIATTmY9N5xCvVp56w+a\u002Fdos3ab+MjeFJ1uAydG452TIbt3KhRvmJtjD1AE+FbAF4WixrB06zPOOX3G7tVm7Rs7ADdkmuRPja0cfPnYrp1+iweoBFqBu8oJaJ2HyvqwLMuesWvFJ3zCIi\u002FTUDTLIgvwAreB11LKL8rqDHTGYniDFlnqE4hMSg5BAeuBR0BUSplQVudk7Xjyjmu3wBzgDDABrP4BXE3WTgHZ\u002FwC0VLoBjEgpFzaBUsrvwAPADxsrJTIDAzp0qPRSoF1KOQaElddYewG0LbNc2sH7bIGpp4d9vVDAj5bDRK8YxO54YcWH4zQBXQkSXQ7OxW8sVjTxpLyOYcPPyKEy7uen6Eq4IKgRCXiJttziZ0ufXGo9CfcKpZRuwBMj5onIiPtq5KHbYPB8HcN9xxJDN6sZKv1rD7eA85f2sRhoZ7G5m6XmE3y+nrde33otQc2gv8BwBk771wa7\u002FYmBa0cZKdlxsaVszGUhsJ+ly1VEA0UbMBW2+Z6FK4CpG\u002FQXGwxVHWGwvBozJ8NQFECsg9Jc2v5Z7EZpYRn0GxIhDrvY9lKtAAAAAElFTkSuQmCC",{"url":94},"https:\u002F\u002Fcdn.sanity.io\u002Ffiles\u002F355nlzcp\u002Fproduction\u002Ff49b9fa081e7bf97fdfcd6f8e85660c34fd33150.json",{"icon":96,"link":98,"media":102},{"isCustom":29,"raw":97},"\u003Csvg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\" fill=\"none\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n\u003Ccircle cx=\"24\" cy=\"24\" r=\"24\" fill=\"url(#paint0_linear_3843_66150)\"\u002F>\n\u003Cpath d=\"M8.63989 42.3996L33.2353 31.5813L25.4492 23.3346L8.63989 42.3996ZM17.6752 15.1005L25.4613 23.3346L39.3599 5.59961L17.6752 15.1005Z\" fill=\"white\"\u002F>\n\u003Cdefs>\n\u003ClinearGradient id=\"paint0_linear_3843_66150\" x1=\"48\" y1=\"24.0368\" x2=\"-1.71443e-07\" y2=\"24.0368\" gradientUnits=\"userSpaceOnUse\">\n\u003Cstop stop-color=\"#33FF99\"\u002F>\n\u003Cstop offset=\"1\" stop-color=\"#00CCFF\"\u002F>\n\u003C\u002FlinearGradient>\n\u003C\u002Fdefs>\n\u003C\u002Fsvg>\n",{"anchor":28,"getParameters":28,"isInternal":29,"label":99,"openInNewTab":28,"page":100,"title":28,"url":62},"$RUNE",{"slug":101,"type":43},"rune",{"image":103,"lottie":106,"type":54},{"alt":47,"assetId":104,"caption":28,"crop":28,"height":49,"hotspot":28,"lqip":105,"width":51},"image-7d03dcb9e362797128e360b59ec0cc0cb5032643-249x217-png","data:image\u002Fpng;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAACXBIWXMAAAsTAAALEwEAmpwYAAACcUlEQVR4nJ1UXUhUQRi9u5lE6VNIUCRFYSWy3plZW6hoswJJ7I8QggjyoXyxh4gIitqe86EezFB378ysWrFJvyCClCWYEEXPEdGjIBWUkdrONydmExHczZ8DH\u002Ffhzj3zfeec73reUgAvtKTz8wCEAIS82UqEc89lAZkV25AsFb91OZvq2iEgt0cRbKxEpsS9WxJXIzLFkcnOzT70UW7kdQHdzki2M6OvRpBqENDllcgUL4pMoGNlDXQFs+oCIzXISX9hpMc5pcd3UvfnqFEDwsjzAmqLO+sVHtELJZAIV6FrHbf6LLd6hJH8xY2k3dRNDdRHx+mx2Uf3JgSpYW7kGf9nquyfxvnMAkJxJIo4lOBWd3OrvjMKaI\u002FRtpn6bSuN2otm0B6g+8RJfeVQSX86Vd1YUE8gJNCxOgp1hJN8wyjI+pRELfXgmn2Nu\u002FY9mug5YiStb4I\u002FnOQrP5s6FIdcNd\u002F5mXF34UkpQ\u002FokJ\u002FWBmZR1hPupF1doCDftKI5RHxilrOuck3zLIE\u002FE0VaSP0ozHTIEhxnJEZ+CbIwUTtPTXHd37Ds00iMIChzhtCD5kkPX5e9wpksPiaIINGPQkpP65vRqMQP2Bg3bc9Rva02P5SSJw7muOqJIV+XCXshld5OPVBmDahKkh\u002FdS70Q9PTQH6QHFSLsxDSP1g5F+wa08VQO9dsHNcdlik11bGYIWQbpfkP7EkB5jpMc40h85qWfMBM0xyE1xDBV5i4HbArdmPoJ6ZoLLgvRtRuoWN\u002FoSzwZ11VAb\u002Fh9qL58ECFeircR9XIPOishUZwVDcn0ErWsK67YwaS5Oc2v5f5tZUmfWnFoAfwHy1auqFdA+IAAAAABJRU5ErkJggg==",{"url":107},"https:\u002F\u002Fcdn.sanity.io\u002Ffiles\u002F355nlzcp\u002Fproduction\u002Fd12cfbb5e858bd1fdf6e05856b035b3410af7a5c.json",{"icon":109,"link":111,"media":115},{"isCustom":29,"raw":110},"\u003Csvg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\" fill=\"none\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n\u003Ccircle cx=\"24\" cy=\"24\" r=\"24\" fill=\"#00CCFF\"\u002F>\n\u003Cpath d=\"M8.63989 42.3996L33.2353 31.5813L25.4492 23.3346L8.63989 42.3996ZM17.6752 15.1005L25.4613 23.3346L39.3599 5.59961L17.6752 15.1005Z\" fill=\"white\"\u002F>\n\u003C\u002Fsvg>\n",{"anchor":28,"getParameters":28,"isInternal":29,"label":112,"openInNewTab":28,"page":113,"title":28,"url":62},"$TCY",{"slug":114,"type":43},"tcy",{"image":116,"lottie":119,"type":54},{"alt":47,"assetId":117,"caption":28,"crop":28,"height":49,"hotspot":28,"lqip":118,"width":51},"image-df576c744b36236856b41bda8a36721818c34d73-249x217-png","data:image\u002Fpng;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAACXBIWXMAAAsTAAALEwEAmpwYAAACYklEQVR4nL1USWsUURCudHVPXBKFEJcEYxQJhoCKIt48eBEMBlxAL4KoiIgXRQKCh4D+BD0pgiB48O5BDy5oNMg46e73embMgokEQiAEIctkXtXrkhcH3CYx5mBBnR71VX3fV\u002FUA\u002FmuI1FTNFYIhDKTrIJFWyM13LKSWrVCQengi+G9gA2ktqNIOVHQSI7qFMd3HmO752vRgTMegr7QdtGSWB6YlA\u002FF8u6e429P8AhMeRc2TgebJNXn+vCqxz\u002F2Ir0EibZCVYCmONdAjHmSlyVN8GbXtQ8WztTFxoyLbUSC7u2jshjzPBIm89RRfgN7pjd81raare3AdtRxAZR+j4q8Ykm2IyumRQZN2j3F6etikzZqsr3gKFT0MwvLeip6LAI7LWsynJ1DZPgwNY85Ic2zk\u002FAjJ7XErhwZI6kKTYmgIY3qDIR2FL7K6ivMVusOy3ivKGVQcoSvMGWlRRs6NkFwfY9lVMBL0lx2gxdB89BI5teC6q\u002F2DtusSugnpOCp+jxFRXWjk4Cc3HUvPOMu+gpFa1ygyBhW\u002Fxlg64V3VCSuAL8X3Y9mP2j5CbaeatEm7hkx6aZTSw4Mm3RyX0yAii4onUdMDUOU9S+xkhXYsmzzNFwNtexsSnmkrMrcmZOuVsX5MjBFNo+ZXnuazUJTGynRLXI9zOidtfmSuZjQ\u002Fy+R5OEh4AhOe8BIe8hQ\u002F9SJzBbKlHX\u002FZw9+Wu7+0DRV1+crcRGXvorJ3PM03MKZOUHMtoPUyLwUq4bTRUgcf5logO98OkeyEaHaLMw7EubqScPo4XX\u002FOFf82P1Arp7XYif0a3wBb6qnvxaS6lwAAAABJRU5ErkJggg==",{"url":120},"https:\u002F\u002Fcdn.sanity.io\u002Ffiles\u002F355nlzcp\u002Fproduction\u002F5f05576aa4c091df234a605d02cc0d364dda67ae.json",{"icon":122,"link":124,"media":128},{"isCustom":29,"raw":123},"\u003Csvg width=\"171\" height=\"171\" viewBox=\"0 0 171 171\" fill=\"none\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n\u003Crect width=\"171\" height=\"170.045\" rx=\"2\" fill=\"white\"\u002F>\n\u003Crect x=\"14\" y=\"14\" width=\"142.341\" height=\"66.3939\" rx=\"4\" fill=\"#33FF99\"\u002F>\n\u003Crect x=\"14\" y=\"99\" width=\"66.3939\" height=\"9.55307\" rx=\"2\" fill=\"#E0E0E0\"\u002F>\n\u003Crect x=\"14\" y=\"118.106\" width=\"66.3939\" height=\"9.55307\" rx=\"2\" fill=\"#E0E0E0\"\u002F>\n\u003Crect x=\"14\" y=\"136.734\" width=\"66.3939\" height=\"9.55307\" rx=\"2\" fill=\"#E0E0E0\"\u002F>\n\u003Crect x=\"89.9473\" y=\"89.9463\" width=\"66.3939\" height=\"66.3939\" rx=\"4\" fill=\"#E0E0E0\"\u002F>\n\u003C\u002Fsvg>\n",{"anchor":28,"getParameters":28,"isInternal":29,"label":125,"openInNewTab":28,"page":126,"title":28,"url":62},"Blog",{"slug":127,"type":43},"blog",{"image":129,"lottie":132,"type":54},{"alt":47,"assetId":130,"caption":28,"crop":28,"height":49,"hotspot":28,"lqip":131,"width":51},"image-60b273ef3f61fb210391ace13ae24fd54315e903-249x217-png","data:image\u002Fpng;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAACXBIWXMAAAsTAAALEwEAmpwYAAACwUlEQVR4nJWUS2gTQRjHE6nWRvAqouihEVQoqDfbXsRLhYIPEFG0B08KPhAUtAfNSWjQnmvbYMGbxbRQlGIpaStt7ANqH+kjkSbZdjeJO9ndZLPZ7Lw+2ZqAtGmqAz\u002F+zAzzY2aYbxyOLQ0AnACwpwJOx782+CPbCwA1AOAqQ01xfncpADhFANdYIXb6Iyw2dZOZK50wffkd+b6Zdt8eH+HRUyKIrsq7BXC+AtgzC8KRHjr74CkMfW6B\u002FuBt+DRxh\u002Fk3swX6gs\u002FY8JcPdO5xKLN+AiF0MBqN7i8vLQqHIV77lgXbbrC+jUboIfXgIw3cR+1shPfkJu1HnZkfffMR7eHPJeOqIOh1xatw7ih8zca9zaxXPAdd7Ax0sLPQwUtcK\u002FTiLmElEZwyF+en8WA4bNyLxX4d3n78ojBgRtxv2KT3OveLjdDDzkM3rwcf2DRwH9zK+8G3GuEjIxabGSfx0ILpWVtTjm8Tlp7Koim4B1jE284mxVY2zJ7Tr\u002FwFGwKbVjYE7fkgDKxKbDSA6dQ3GgstWJ61UAWhZmruJNO9UaqKKyTFlnCSL5MUlFjNI5gP5\u002FjEKGYzEyS+HNpFCAC1hBAvpVQkhFDLsjjGGEqYJgZx3eShhTyLLFvx9bjpkdZ2ETLG2hhjG7YQY8z+FhYKFqiKzpNJjSkoF1dV3aNIFYSGYRzFGD+ilA4SQuYsy0pYloULhQK3MU2TZzJZpmkaNQwjpuuGR5Kk7cKSNJFIHNB1vY4Q0owxvp\u002FP5\u002FsNw0jruo6z2SzOZDJEURSsqirW9Vw0l8u9VBTl2I5VU9zpPlusaZobIfREVdUBhNAYQmjURpZlO8cURfEjhO4mk8lDFcuwKHWKouiSZfmkLMsX0+l0UyqVaiqlJEmXZFm+IAiC2y6\u002F8vVcXlzFOa+2F20lHA5XBwKBKofD8d\u002Ff2Y5\u002FYznZb5MYH+0zomWxAAAAAElFTkSuQmCC",{"url":133},"https:\u002F\u002Fcdn.sanity.io\u002Ffiles\u002F355nlzcp\u002Fproduction\u002F9f4f2678daa0ced5ddeb857c80aba99cdc2327df.json",{"icon":135,"link":137,"media":141},{"isCustom":29,"raw":136},"\u003Csvg width=\"219\" height=\"150\" viewBox=\"0 0 219 150\" fill=\"none\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n\u003Cpath d=\"M218.878 75C195.267 116.421 154.167 150 109.439 150C64.7096 150 23.6107 116.421 0 75C23.6107 33.5786 64.7096 0 109.439 0C154.167 0 195.267 33.5786 218.878 75Z\" fill=\"white\"\u002F>\n\u003Ccircle cx=\"109.439\" cy=\"74.9988\" r=\"62.0301\" fill=\"#00CCFF\"\u002F>\n\u003Ccircle cx=\"110.03\" cy=\"74.4075\" r=\"27.1751\" fill=\"black\"\u002F>\n\u003C\u002Fsvg>\n",{"anchor":28,"getParameters":28,"isInternal":29,"label":138,"openInNewTab":28,"page":139,"title":28},"Vision",{"slug":140,"type":43},"vision",{"image":142,"lottie":145,"type":54},{"alt":47,"assetId":143,"caption":28,"crop":28,"height":49,"hotspot":28,"lqip":144,"width":51},"image-b942f780208164574bc627717b8ba767769679c8-249x217-png","data:image\u002Fpng;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAACXBIWXMAAAsTAAALEwEAmpwYAAACW0lEQVR4nK2Uz0tUURTHdaKiH0RUFLUJiqJdBEG7FrUogiRq06a\u002FINpE4NYgMGjZIttEi2qhRAS1yGlGR0cdxSxGndExmxlnlPnhqM004\u002FjuPfcT7\u002FkYBrI068KXd+Cd+73fc8733oaGdRbQuFa8qQU0Ah73W4s3S7QF2A0cAY65OAzscv9tjJhVFTbRKeCaZXGvXOJhuUSrVeUucBU46eZ41iOzTz4IXFIrPFoq0J1OEJuKkP4aJTUTl9hCAb9StAIXgQP2nj+R2SXdtCw68llJjn1R1YHAivT5Sw5CgaqMh\u002FXyfE7iSvESuOEK8KzVs\u002F12gghvS0WZj44q3fOxYvp8cRMOdZtwqMv0+76ZoL8ik+NaFb9LVoQOpWgC9tZ6agfGmO3AOeCZ1mRyGa2Hgsr0eLPERt6wONPMYqqZ2OfX9HozDPcrM58TpbWZFaENOANsdUjrhtAEpktrU8nMigwENH2+GVLRNqz8LQep6BP6fUkGexXZORGtKQOdwGVgh1O6W+424CzwVCnm8llRjsLOPNHh9xTiLRQSLUQ\u002FvaOnM1enkBTwGDhdU1jXQ7sPTXZffhTJTI4pFfRVJehNm5HgkAM7DvqrEotoq1SUORFe2eqMMXt+8WV7+6pljDHXlTIvCnmZjoR1JRSwJOhfdjDYq\u002FTEqC4X8jJlWfLcHcj+3\u002FrRtY6dcEEpHiwV8KYTRKcnSE7HTGI2KZHFBfkgihbgPLBvI+b2uNfrBHDFsrizXOa+DW1x2x3AcWDn31y\u002FRletTXwIOOrCNrEzzX95JOzN9fgvT1gN6234Cega0QKe7QqpAAAAAElFTkSuQmCC",{"url":146},"https:\u002F\u002Fcdn.sanity.io\u002Ffiles\u002F355nlzcp\u002Fproduction\u002F10605a7dc834718366393857d9c7dc4b3459fd63.json",[148,167,209,236,257,278,296,311],{"children":149,"label":166},[150,152,154,156,158,160,162,164],{"anchor":28,"getParameters":28,"isInternal":29,"label":40,"openInNewTab":28,"page":151,"title":28},{"slug":42,"type":43},{"anchor":28,"getParameters":28,"isInternal":29,"label":59,"openInNewTab":28,"page":153,"title":28},{"slug":61,"type":43},{"anchor":28,"getParameters":28,"isInternal":29,"label":73,"openInNewTab":28,"page":155,"title":28},{"slug":75,"type":43},{"anchor":28,"getParameters":28,"isInternal":29,"label":86,"openInNewTab":28,"page":157,"title":28},{"slug":88,"type":43},{"anchor":28,"getParameters":28,"isInternal":29,"label":99,"openInNewTab":28,"page":159,"title":28},{"slug":101,"type":43},{"anchor":28,"getParameters":28,"isInternal":29,"label":112,"openInNewTab":28,"page":161,"title":28},{"slug":114,"type":43},{"anchor":28,"getParameters":28,"isInternal":29,"label":125,"openInNewTab":28,"page":163,"title":28},{"slug":127,"type":43},{"anchor":28,"getParameters":28,"isInternal":29,"label":138,"openInNewTab":28,"page":165,"title":28},{"slug":140,"type":43},"Menu",{"children":168,"label":208},[169,173,177,181,185,189,193,197,200,204],{"anchor":28,"getParameters":28,"isInternal":29,"label":170,"openInNewTab":28,"page":171,"title":28},"FAQ",{"slug":172,"type":43},"faq",{"anchor":28,"getParameters":28,"isInternal":29,"label":174,"openInNewTab":28,"page":175,"title":28},"Contributors",{"slug":176,"type":43},"contributors",{"anchor":28,"getParameters":28,"isInternal":29,"label":178,"openInNewTab":28,"page":179,"title":28},"Pro Trader",{"slug":180,"type":43},"pro-trader",{"anchor":28,"getParameters":28,"isInternal":29,"label":182,"openInNewTab":28,"page":183,"title":28},"Node Operator",{"slug":184,"type":43},"node-operator",{"anchor":28,"getParameters":28,"isInternal":29,"label":186,"openInNewTab":28,"page":187,"title":28},"Bond $RUNE",{"slug":188,"type":43},"bond-rune",{"anchor":28,"getParameters":28,"isInternal":190,"label":191,"openInNewTab":28,"title":28,"url":192},false,"Whitepaper","https:\u002F\u002Fdocs.thorchain.org\u002F",{"anchor":28,"getParameters":28,"isInternal":29,"label":194,"openInNewTab":28,"page":195,"title":28,"url":192},"Brand Assets",{"slug":196,"type":43},"brand-assets",{"anchor":28,"getParameters":28,"isInternal":190,"label":198,"openInNewTab":28,"title":28,"url":199},"Audits","https:\u002F\u002Fgithub.com\u002Fthorchain\u002FResources\u002Ftree\u002Fmaster\u002FAudits",{"anchor":28,"getParameters":28,"isInternal":29,"label":201,"openInNewTab":28,"page":202,"title":28},"Privacy Policy",{"slug":203,"type":43},"privacy-policy",{"anchor":28,"getParameters":28,"isInternal":29,"label":205,"openInNewTab":28,"page":206,"title":28},"Terms of Use",{"slug":207,"type":43},"terms-of-use","THORChain",{"children":210,"label":235},[211,215,219,222,225,229,232],{"anchor":28,"getParameters":28,"isInternal":190,"label":212,"openInNewTab":28,"page":213,"title":28,"url":214},"THORChain Explorer",{"slug":101,"type":43},"https:\u002F\u002Fthorchain.net\u002Fdashboard",{"anchor":28,"getParameters":28,"isInternal":190,"label":216,"openInNewTab":28,"page":217,"title":28,"url":218},"RUNEScan",{"slug":196,"type":43},"https:\u002F\u002Frunescan.io\u002Ffr",{"anchor":28,"getParameters":28,"isInternal":190,"label":220,"openInNewTab":28,"title":28,"url":221},"Viewblock","https:\u002F\u002Fviewblock.io\u002Fthorchain",{"anchor":28,"getParameters":28,"isInternal":190,"label":223,"openInNewTab":28,"title":28,"url":224},"THORNodes","https:\u002F\u002Fthornode.network\u002F",{"anchor":28,"getParameters":28,"isInternal":190,"label":226,"openInNewTab":28,"theme":227,"title":28,"url":228},"THORChain Network","default","https:\u002F\u002Fthorchain.network\u002Fnodes",{"anchor":28,"getParameters":28,"isInternal":190,"label":230,"openInNewTab":28,"title":28,"url":231},"RUNE Tools","https:\u002F\u002Frune.tools\u002F",{"anchor":28,"getParameters":28,"isInternal":190,"label":233,"openInNewTab":28,"title":28,"url":234},"XScanner","https:\u002F\u002Fxscanner.org\u002F","Explorers",{"children":237,"label":256},[238,241,244,247,250,253],{"anchor":28,"getParameters":28,"isInternal":190,"label":239,"openInNewTab":28,"title":28,"url":240},"Messari","https:\u002F\u002Fmessari.io\u002Fdashboards\u002Fthorchain",{"anchor":28,"getParameters":28,"isInternal":190,"label":242,"openInNewTab":28,"title":28,"url":243},"Dune","https:\u002F\u002Fdune.com\u002Fthorchain\u002Fthorchain-overview",{"anchor":28,"getParameters":28,"isInternal":190,"label":245,"openInNewTab":28,"title":28,"url":246},"Raynalytics","https:\u002F\u002Fraynalytics.net\u002F",{"anchor":28,"getParameters":28,"isInternal":190,"label":248,"openInNewTab":28,"title":28,"url":249},"THORCharts","https:\u002F\u002Fthorcharts.org\u002F",{"anchor":28,"getParameters":28,"isInternal":190,"label":251,"openInNewTab":28,"title":28,"url":252},"Snowflake","https:\u002F\u002Fapp.snowflake.com\u002Fmarketplace\u002Flisting\u002FGZT0ZJKG5R1\u002Fflipside-crypto-thorchain-premium-onchain-data",{"anchor":28,"getParameters":28,"isInternal":190,"label":254,"openInNewTab":28,"title":28,"url":255},"GrassRoots Crypto","https:\u002F\u002Fwww.youtube.com\u002F@GrassRootsCrypto","Research",{"children":258,"label":277},[259,262,265,268,271,274],{"anchor":28,"getParameters":28,"isInternal":190,"label":260,"openInNewTab":28,"title":28,"url":261},"Rujira","https:\u002F\u002Frujira.network\u002F",{"anchor":28,"getParameters":28,"isInternal":190,"label":263,"openInNewTab":28,"title":28,"url":264},"Maya Protocol","https:\u002F\u002Fwww.mayaprotocol.com\u002F",{"anchor":28,"getParameters":28,"isInternal":190,"label":266,"openInNewTab":28,"title":28,"url":267},"Liquify","https:\u002F\u002Fwww.liquify.com\u002F",{"anchor":28,"getParameters":28,"isInternal":190,"label":269,"openInNewTab":28,"title":28,"url":270},"Berserk Marketing","https:\u002F\u002Fberserkmarketingltd.com\u002F",{"anchor":28,"getParameters":28,"isInternal":190,"label":272,"openInNewTab":28,"title":28,"url":273},"Soda Labs","https:\u002F\u002Fsodalabs.xyz\u002F",{"anchor":28,"getParameters":28,"isInternal":190,"label":275,"openInNewTab":28,"title":28,"url":276},"Hypernative","https:\u002F\u002Fwww.hypernative.io\u002F","Partners",{"children":279,"label":295},[280,283,286,289,292],{"anchor":28,"getParameters":28,"isInternal":190,"label":281,"openInNewTab":28,"title":28,"url":282},"GitLab","https:\u002F\u002Fgitlab.com\u002Fthorchain",{"anchor":28,"getParameters":28,"isInternal":190,"label":284,"openInNewTab":28,"title":28,"url":285},"Dev Discord","https:\u002F\u002Fdiscord.com\u002Finvite\u002Fthorchaindevs",{"anchor":28,"getParameters":28,"isInternal":190,"label":287,"openInNewTab":28,"title":28,"url":288},"Dev Docs","https:\u002F\u002Fdev.thorchain.org\u002F",{"anchor":28,"getParameters":28,"isInternal":190,"label":290,"openInNewTab":28,"title":28,"url":291},"Ecosystem Guide","https:\u002F\u002Ftcecosystem.guide\u002Findex.html",{"anchor":28,"getParameters":28,"isInternal":190,"label":293,"openInNewTab":28,"title":28,"url":294},"Bug Bounty","https:\u002F\u002Fgitlab.com\u002Fthorchain\u002Fthornode\u002F-\u002Fblob\u002Fdevelop\u002Fbugbounty.md","Developers",{"children":297,"label":310},[298,301,304,307],{"anchor":28,"getParameters":28,"isInternal":190,"label":299,"openInNewTab":28,"title":28,"url":300},"THOR InfoBot","https:\u002F\u002Fx.com\u002FTHOR_InfoBot",{"anchor":28,"getParameters":28,"isInternal":190,"label":302,"openInNewTab":28,"title":28,"url":303},"THORChain Infobot","https:\u002F\u002Ft.me\u002Fthor_infobot",{"anchor":28,"getParameters":28,"isInternal":190,"label":305,"openInNewTab":28,"title":28,"url":306},"THORChain Alerts","https:\u002F\u002Ft.me\u002Fthorchain_alert",{"anchor":28,"getParameters":28,"isInternal":190,"label":308,"openInNewTab":28,"title":28,"url":309},"THORChain DEV","https:\u002F\u002Ft.me\u002Fthorchain_dev","Notifications",{"children":312,"label":328},[313,316,319,322,325],{"anchor":28,"getParameters":28,"isInternal":190,"label":314,"openInNewTab":28,"theme":227,"title":28,"url":315},"Midgard","https:\u002F\u002Fgateway.liquify.com\u002Fchain\u002Fthorchain_midgard\u002Fv2\u002Fdoc",{"anchor":28,"getParameters":28,"isInternal":190,"label":317,"openInNewTab":28,"theme":227,"title":28,"url":318},"THORNode","https:\u002F\u002Fgateway.liquify.com\u002Fchain\u002Fthorchain_api\u002Fthorchain\u002Fdoc",{"anchor":28,"getParameters":28,"isInternal":190,"label":320,"openInNewTab":28,"theme":227,"title":28,"url":321},"THORNode - Liquify","https:\u002F\u002Fapiv2.liquify.com\u002Fthor\u002Fapi\u002Fdocs",{"anchor":28,"getParameters":28,"isInternal":190,"label":323,"openInNewTab":28,"theme":227,"title":28,"url":324},"DEX Integration","https:\u002F\u002Fapi-thor.liquify.com\u002Fdocs#\u002F",{"anchor":28,"getParameters":28,"isInternal":190,"label":326,"openInNewTab":28,"theme":227,"title":28,"url":327},"RPC","https:\u002F\u002Fgateway.liquify.com\u002Fchain\u002Fthorchain_rpc","API","Error, try again later","The best way to stay up to date on THORChain","Enter your email","Sign Up","Subscribed",[335,343,351,359,367,375,383,391,398,405,412,419],{"_key":336,"icon":337,"link":340},"2eb184d055a2",{"icon":338,"isCustom":29,"raw":339},"x","\u003Csvg width=\"20\" height=\"19\" viewBox=\"0 0 20 19\" fill=\"none\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n\u003Cpath d=\"M15.8014 0H18.867L12.136 8.06273L20 19H13.8287L8.997 12.3535L3.46551 19H0.399867L7.53082 10.3764L0 0H6.32456L10.6898 6.07159L15.8014 0ZM14.7284 17.107H16.4279L5.43152 1.82288H3.60546L14.7284 17.107Z\" fill=\"#FAFAFA\"\u002F>\n\u003C\u002Fsvg>\n",{"isInternal":190,"label":341,"url":342},"X (Twitter)","https:\u002F\u002Fx.com\u002Fthorchain",{"_key":344,"icon":345,"link":348},"b4fd5f2c06d5",{"icon":346,"isCustom":29,"raw":347},"telegram","\u003Csvg width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n\u003Cpath d=\"M18.6339 0.0653823L0.520771 6.77709C0.509994 6.78106 0.499547 6.78582 0.48952 6.7913C0.34264 6.87098 -0.682396 7.47134 0.762967 8.00961L0.777811 8.01484L5.09085 9.3491C5.12376 9.35934 5.1586 9.36257 5.19295 9.35856C5.22729 9.35456 5.26031 9.34341 5.28969 9.32591L15.9873 2.93477C16.0135 2.9191 16.0428 2.90855 16.0733 2.90373C16.2221 2.88016 16.6506 2.83602 16.3795 3.16557C16.0729 3.53962 8.76598 9.80957 7.95501 10.5049C7.90825 10.5451 7.87932 10.601 7.87415 10.6609L7.52023 14.7007C7.52019 14.7419 7.53015 14.7825 7.54934 14.8193C7.56853 14.8561 7.59642 14.8881 7.63078 14.9128C7.67955 14.9422 7.73689 14.9559 7.79436 14.9517C7.85182 14.9475 7.90636 14.9258 7.94993 14.8896L10.5125 12.6965C10.553 12.6619 10.6046 12.6416 10.6589 12.6389C10.7131 12.6363 10.7666 12.6515 10.8106 12.682L15.2814 15.7904L15.2959 15.7997C15.4041 15.8637 16.5729 16.5149 16.9104 15.0606L19.9964 1.00913C20.0007 0.964615 20.0425 0.475349 19.6773 0.186203C19.2937 -0.116035 18.7507 0.0365798 18.6691 0.0530383C18.657 0.0562485 18.6453 0.0603764 18.6339 0.0653823Z\" fill=\"#FAFAFA\"\u002F>\n\u003C\u002Fsvg>\n",{"isInternal":190,"label":349,"url":350},"Telegram","https:\u002F\u002Ft.me\u002Fthorchain_org",{"_key":352,"icon":353,"link":356},"e7ab02eb4513",{"icon":354,"isCustom":29,"raw":355},"discord","\u003Csvg width=\"20\" height=\"15\" viewBox=\"0 0 20 15\" fill=\"none\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n\u003Cpath d=\"M12.8155 0C12.62 0.343329 12.4445 0.698502 12.285 1.06156C10.7693 0.836619 9.22574 0.836619 7.70605 1.06156C7.55055 0.698502 7.37106 0.343329 7.17559 0C5.75169 0.240729 4.36362 0.662984 3.04741 1.25888C0.438864 5.08286 -0.267107 8.80821 0.0838889 12.4822C1.61154 13.5991 3.32263 14.4515 5.14542 14.996C5.55622 14.4515 5.91921 13.8714 6.23033 13.2676C5.63999 13.0505 5.06962 12.7782 4.52319 12.4625C4.66678 12.3599 4.80637 12.2533 4.942 12.1508C8.14484 13.6424 11.8542 13.6424 15.061 12.1508C15.1966 12.2613 15.3362 12.3678 15.4798 12.4625C14.9334 12.7821 14.363 13.0505 13.7687 13.2715C14.0798 13.8753 14.4428 14.4554 14.8536 15C16.6764 14.4554 18.3875 13.6069 19.9152 12.4901C20.33 8.22809 19.2052 4.53434 16.9436 1.26284C15.6314 0.666932 14.2434 0.244672 12.8195 0.00789131L12.8155 0ZM6.67703 10.221C5.69186 10.221 4.87416 9.33702 4.87416 8.24389C4.87416 7.15077 5.65991 6.26282 6.67302 6.26282C7.68613 6.26282 8.49181 7.15468 8.47589 8.24389C8.45992 9.33305 7.68218 10.221 6.67703 10.221ZM13.322 10.221C12.3329 10.221 11.5232 9.33702 11.5232 8.24389C11.5232 7.15077 12.3089 6.26282 13.322 6.26282C14.3351 6.26282 15.1368 7.15468 15.1208 8.24389C15.1049 9.33305 14.3271 10.221 13.322 10.221Z\" fill=\"#FAFAFA\"\u002F>\n\u003C\u002Fsvg>\n",{"isInternal":190,"label":357,"url":358},"Discord","https:\u002F\u002Fdiscord.gg\u002Fthorchaincommunity",{"_key":360,"icon":361,"link":364},"a78ef65b331f",{"icon":362,"isCustom":29,"raw":363},"gitlab","\u003Csvg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n\u003Cpath d=\"M18.5236 0H1.47639C1.08483 0 0.709301 0.155548 0.432425 0.432425C0.155548 0.709301 0 1.08483 0 1.47639V18.5236C0 18.9152 0.155548 19.2907 0.432425 19.5676C0.709301 19.8445 1.08483 20 1.47639 20H18.5236C18.9152 20 19.2907 19.8445 19.5676 19.5676C19.8445 19.2907 20 18.9152 20 18.5236V1.47639C20 1.08483 19.8445 0.709301 19.5676 0.432425C19.2907 0.155548 18.9152 0 18.5236 0ZM5.96111 17.0375H2.95417V7.48611H5.96111V17.0375ZM4.45556 6.1625C4.11447 6.16058 3.7816 6.05766 3.49895 5.86674C3.21629 5.67582 2.99653 5.40544 2.8674 5.08974C2.73826 4.77404 2.70554 4.42716 2.77336 4.09288C2.84118 3.7586 3.0065 3.4519 3.24846 3.21148C3.49042 2.97107 3.79818 2.80772 4.13289 2.74205C4.4676 2.67638 4.81426 2.71133 5.12913 2.84249C5.44399 2.97365 5.71295 3.19514 5.90205 3.47901C6.09116 3.76288 6.19194 4.09641 6.19167 4.4375C6.19488 4.66586 6.15209 4.89253 6.06584 5.104C5.97959 5.31547 5.85165 5.50742 5.68964 5.66839C5.52763 5.82936 5.33487 5.95607 5.12285 6.04096C4.91083 6.12585 4.68389 6.16718 4.45556 6.1625ZM17.0444 17.0458H14.0389V11.8278C14.0389 10.2889 13.3847 9.81389 12.5403 9.81389C11.6486 9.81389 10.7736 10.4861 10.7736 11.8667V17.0458H7.76667V7.49306H10.6583V8.81667H10.6972C10.9875 8.22917 12.0042 7.225 13.5556 7.225C15.2333 7.225 17.0458 8.22083 17.0458 11.1375L17.0444 17.0458Z\" fill=\"#FAFAFA\"\u002F>\n\u003C\u002Fsvg>\n",{"isInternal":190,"label":365,"url":366},"LinkedIn","https:\u002F\u002Flinkedin.com\u002Fcompany\u002Fthorchain",{"_key":368,"icon":369,"link":372},"fcd9d1276a23",{"icon":370,"isCustom":29,"raw":371},"youtube","\u003Csvg width=\"20\" height=\"14\" viewBox=\"0 0 20 14\" fill=\"none\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n\u003Cpath d=\"M19.8008 3.02083C19.8008 3.02083 19.6055 1.64843 19.0039 1.04582C18.2422 0.252708 17.3906 0.24882 17 0.202166C14.2031 -1.12332e-07 10.0039 0 10.0039 0H9.99609C9.99609 0 5.79687 -1.12332e-07 3 0.202166C2.60938 0.24882 1.75781 0.252708 0.996094 1.04582C0.394531 1.64843 0.203125 3.02083 0.203125 3.02083C0.203125 3.02083 0 4.63427 0 6.24382V7.75229C0 9.36184 0.199219 10.9753 0.199219 10.9753C0.199219 10.9753 0.394531 12.3477 0.992187 12.9503C1.75391 13.7434 2.75391 13.7162 3.19922 13.8017C4.80078 13.9533 10 14 10 14C10 14 14.2031 13.9922 17 13.7939C17.3906 13.7473 18.2422 13.7434 19.0039 12.9503C19.6055 12.3477 19.8008 10.9753 19.8008 10.9753C19.8008 10.9753 20 9.36573 20 7.75229V6.24382C20 4.63427 19.8008 3.02083 19.8008 3.02083ZM7.93359 9.58345V3.98889L13.3359 6.79589L7.93359 9.58345Z\" fill=\"#FAFAFA\"\u002F>\n\u003C\u002Fsvg>\n",{"isInternal":190,"label":373,"url":374},"YouTube","https:\u002F\u002Fwww.youtube.com\u002F@THORChainCommunity",{"_key":376,"icon":377,"link":380},"c6aeacc6ad97",{"icon":378,"isCustom":29,"raw":379},"reddit","\u003Csvg width=\"20\" height=\"17\" viewBox=\"0 0 20 17\" fill=\"none\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n\u003Cpath d=\"M12.5427 2.48901C12.7594 3.3816 13.5842 4.04654 14.5691 4.04654C15.7189 4.04654 16.6511 3.14067 16.6511 2.02327C16.6511 0.90587 15.7189 0 14.5691 0C13.5637 0 12.7252 0.692445 12.53 1.61349C10.8463 1.78897 9.53148 3.17671 9.53148 4.8585C9.53148 4.86229 9.53148 4.86514 9.53148 4.86893C7.70034 4.94387 6.02831 5.4504 4.70083 6.25003C4.20791 5.87914 3.58907 5.65813 2.91752 5.65813C1.306 5.65813 0 6.9273 0 8.49336C0 9.62973 0.687164 10.6086 1.67984 11.0611C1.77648 14.3526 5.46706 17 10.0068 17C14.5466 17 18.2421 14.3497 18.3338 11.0554C19.3187 10.6001 20 9.62404 20 8.49431C20 6.92825 18.694 5.65908 17.0825 5.65908C16.4139 5.65908 15.798 5.8782 15.306 6.24623C13.9668 5.44091 12.2762 4.93438 10.4265 4.86704C10.4265 4.86419 10.4265 4.86229 10.4265 4.85945C10.4265 3.65478 11.348 2.65501 12.5427 2.49091V2.48901ZM4.5837 10.2928C4.6325 9.26454 5.33529 8.47534 6.15227 8.47534C6.96925 8.47534 7.59395 9.30912 7.54514 10.3374C7.49634 11.3656 6.88629 11.7393 6.06833 11.7393C5.25037 11.7393 4.5349 11.321 4.5837 10.2928ZM13.8624 8.47534C14.6803 8.47534 15.3831 9.26454 15.4309 10.2928C15.4797 11.321 14.7633 11.7393 13.9463 11.7393C13.1293 11.7393 12.5183 11.3665 12.4695 10.3374C12.4207 9.30912 13.0444 8.47534 13.8624 8.47534ZM12.8902 12.6717C13.0434 12.6869 13.141 12.8415 13.0815 12.98C12.5788 14.1477 11.3919 14.9682 10.0068 14.9682C8.62177 14.9682 7.43582 14.1477 6.93216 12.98C6.87262 12.8415 6.97023 12.6869 7.12348 12.6717C8.02147 12.5835 8.99268 12.5352 10.0068 12.5352C11.021 12.5352 11.9912 12.5835 12.8902 12.6717Z\" fill=\"#FAFAFA\"\u002F>\n\u003C\u002Fsvg>\n",{"isInternal":190,"label":381,"url":382},"Reddit","https:\u002F\u002Fwww.reddit.com\u002Fr\u002FTHORChain\u002F",{"_key":384,"icon":385,"link":388},"337460c1bb1a",{"icon":386,"isCustom":29,"raw":387},"gitbook","\u003Csvg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n\u003Cpath d=\"M10.0059 1.80113C12.6793 1.80113 12.9959 1.81285 14.0473 1.85974C15.0244 1.90272 15.5521 2.06681 15.9038 2.20356C16.369 2.38328 16.7051 2.60207 17.053 2.9498C17.4047 3.30143 17.6197 3.63352 17.7995 4.09846C17.9363 4.45009 18.1004 4.98144 18.1434 5.95429C18.1903 7.00918 18.2021 7.32565 18.2021 9.99414C18.2021 12.6665 18.1903 12.983 18.1434 14.034C18.1004 15.0107 17.9363 15.5382 17.7995 15.8898C17.6197 16.3548 17.4008 16.6908 17.053 17.0385C16.7012 17.3901 16.369 17.605 15.9038 17.7847C15.5521 17.9215 15.0205 18.0856 14.0473 18.1285C12.992 18.1754 12.6754 18.1871 10.0059 18.1871C7.33242 18.1871 7.01583 18.1754 5.96443 18.1285C4.9873 18.0856 4.45964 17.9215 4.10788 17.7847C3.64276 17.605 3.30662 17.3862 2.95876 17.0385C2.607 16.6869 2.39203 16.3548 2.21223 15.8898C2.07543 15.5382 1.91128 15.0068 1.86828 14.034C1.82138 12.9791 1.80965 12.6626 1.80965 9.99414C1.80965 7.32174 1.82138 7.00527 1.86828 5.95429C1.91128 4.97753 2.07543 4.45009 2.21223 4.09846C2.39203 3.63352 2.6109 3.29752 2.95876 2.9498C3.31053 2.59816 3.64276 2.38328 4.10788 2.20356C4.45964 2.06681 4.99121 1.90272 5.96443 1.85974C7.01583 1.81285 7.33242 1.80113 10.0059 1.80113ZM10.0059 0C7.28943 0 6.94938 0.011721 5.88235 0.0586052C4.81923 0.105489 4.08833 0.277398 3.45515 0.52354C2.79461 0.781403 2.23569 1.12131 1.68067 1.68002C1.12175 2.23481 0.781708 2.79351 0.523744 3.44989C0.277506 4.08674 0.105531 4.81344 0.0586281 5.87615C0.0117256 6.94667 0 7.28658 0 10.002C0 12.7173 0.0117256 13.0572 0.0586281 14.1239C0.105531 15.1866 0.277506 15.9172 0.523744 16.5501C0.781708 17.2104 1.12175 17.7691 1.68067 18.3239C2.23569 18.8787 2.79461 19.2225 3.45124 19.4765C4.08833 19.7226 4.81532 19.8945 5.87844 19.9414C6.94548 19.9883 7.28552 20 10.002 20C12.7184 20 13.0584 19.9883 14.1255 19.9414C15.1886 19.8945 15.9195 19.7226 16.5527 19.4765C17.2093 19.2225 17.7682 18.8787 18.3232 18.3239C18.8782 17.7691 19.2222 17.2104 19.4763 16.554C19.7225 15.9172 19.8945 15.1905 19.9414 14.1278C19.9883 13.0611 20 12.7212 20 10.0059C20 7.29049 19.9883 6.95058 19.9414 5.88396C19.8945 4.82125 19.7225 4.09064 19.4763 3.45771C19.23 2.79351 18.89 2.23481 18.3311 1.68002C17.776 1.12522 17.2171 0.781403 16.5605 0.527447C15.9234 0.281305 15.1964 0.109396 14.1333 0.0625122C13.0623 0.011721 12.7223 0 10.0059 0Z\" fill=\"#FAFAFA\"\u002F>\n\u003Cpath d=\"M10.0035 4.864C7.16593 4.864 4.8638 7.16523 4.8638 10.0017C4.8638 12.8382 7.16593 15.1394 10.0035 15.1394C12.8411 15.1394 15.1433 12.8382 15.1433 10.0017C15.1433 7.16523 12.8411 4.864 10.0035 4.864ZM10.0035 13.3344C8.16261 13.3344 6.66955 11.8419 6.66955 10.0017C6.66955 8.16152 8.16261 6.66904 10.0035 6.66904C11.8445 6.66904 13.3375 8.16152 13.3375 10.0017C13.3375 11.8419 11.8445 13.3344 10.0035 13.3344Z\" fill=\"#FAFAFA\"\u002F>\n\u003Cpath d=\"M16.5407 4.66338C16.5407 5.32757 16.0013 5.86283 15.3407 5.86283C14.6763 5.86283 14.1408 5.32367 14.1408 4.66338C14.1408 3.99919 14.6802 3.46392 15.3407 3.46392C16.0013 3.46392 16.5407 4.00309 16.5407 4.66338Z\" fill=\"#FAFAFA\"\u002F>\n\u003C\u002Fsvg>\n",{"isInternal":190,"label":389,"url":390},"Instagram","https:\u002F\u002Fwww.instagram.com\u002Fthorchain",{"_key":392,"icon":393,"link":395},"0471bb3eca4205722df8ca6d27567665",{"icon":386,"isCustom":29,"raw":394},"\u003Csvg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n\u003Cpath d=\"M19.9996 10.0367C19.9996 4.49365 15.5225 0 9.9998 0C4.47711 0 0 4.49365 0 10.0367C0 14.7436 3.22874 18.6932 7.58425 19.778V13.104H5.52229V10.0367H7.58425V8.7151C7.58425 5.29899 9.12462 3.7156 12.4662 3.7156C13.0997 3.7156 14.1929 3.84046 14.6401 3.96491V6.74509C14.4041 6.7202 13.9941 6.70775 13.4849 6.70775C11.8454 6.70775 11.2118 7.33123 11.2118 8.95196V10.0367H14.4781L13.9169 13.104H11.2118V20C16.1633 19.3998 20 15.1683 20 10.0367H19.9996Z\" fill=\"#FAFAFA\"\u002F>\n\u003C\u002Fsvg>\n",{"isInternal":190,"label":396,"url":397},"Facebook","https:\u002F\u002Fwww.facebook.com\u002FTHORChain\u002F",{"_key":399,"icon":400,"link":402},"aa62a8f1e626",{"isCustom":29,"raw":401},"\u003Csvg width=\"20\" height=\"23\" viewBox=\"0 0 20 23\" fill=\"none\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n\u003Cpath d=\"M14.8236 8.25794C16.2825 9.31189 18.0697 9.93201 20 9.93201V6.17812C19.6347 6.1782 19.2703 6.1397 18.9129 6.06318V9.01802C16.9828 9.01802 15.1958 8.3979 13.7366 7.34403V15.0046C13.7366 18.8368 10.6626 21.9432 6.87093 21.9432C5.45616 21.9432 4.14119 21.511 3.04884 20.7696C4.29558 22.0579 6.03424 22.8571 7.95777 22.8571C11.7497 22.8571 14.8238 19.7507 14.8238 15.9184L14.8236 8.25794ZM16.1647 4.47073C15.4191 3.64754 14.9296 2.58372 14.8236 1.40761V0.924784H13.7935C14.0528 2.41961 14.9372 3.6967 16.1647 4.47073ZM5.44709 17.8289C5.03053 17.2769 4.80542 16.6017 4.80643 15.9074C4.80643 14.1547 6.21243 12.7336 7.94706 12.7336C8.27034 12.7335 8.59168 12.7835 8.89975 12.8823V9.04452C8.53972 8.99465 8.17636 8.97348 7.81315 8.98125V11.9684C7.50484 11.8696 7.18335 11.8194 6.85999 11.8197C5.12536 11.8197 3.71943 13.2407 3.71943 14.9936C3.71943 16.2331 4.4222 17.3062 5.44709 17.8289Z\" fill=\"#FAFAFA\"\u002F>\n\u003Cpath d=\"M13.728 7.34395C15.1873 8.39782 16.9742 9.01794 18.9043 9.01794V6.0631C17.827 5.83117 16.8732 5.26217 16.1561 4.47073C14.9286 3.69662 14.0442 2.41953 13.7849 0.924784H11.079V15.9182C11.0728 17.6661 9.66924 19.0815 7.93833 19.0815C6.91834 19.0815 6.01217 18.5901 5.43828 17.8289C4.41347 17.3062 3.7107 16.233 3.7107 14.9937C3.7107 13.2409 5.11663 11.8198 6.85126 11.8198C7.18361 11.8198 7.50394 11.8721 7.80442 11.9685V8.98132C4.07934 9.0591 1.08348 12.1352 1.08348 15.9183C1.08348 17.8068 1.82952 19.5188 3.04035 20.7697C4.13269 21.511 5.44766 21.9433 6.86243 21.9433C10.6542 21.9433 13.7281 18.8368 13.7281 15.0046L13.728 7.34395Z\" fill=\"#FAFAFA\"\u002F>\n\u003Cpath d=\"M18.9079 6.05215V5.25318C17.9363 5.25467 16.9839 4.9797 16.1596 4.4597C16.8893 5.26706 17.8501 5.82375 18.9079 6.05215ZM13.7884 0.913832C13.7637 0.770975 13.7447 0.627176 13.7315 0.482829V0H9.99534V14.9936C9.98937 16.7413 8.58584 18.1566 6.85478 18.1566C6.34656 18.1566 5.86673 18.0347 5.4418 17.818C6.01569 18.5791 6.92185 19.0704 7.94185 19.0704C9.6726 19.0704 11.0764 17.6553 11.0825 15.9073V0.913832H13.7884ZM7.80809 8.97037V8.11981C7.4959 8.07669 7.18116 8.05505 6.86602 8.05521C3.07395 8.05513 0 11.1617 0 14.9936C0 17.396 1.20812 19.5132 3.04394 20.7586C1.83311 19.5078 1.08707 17.7957 1.08707 15.9073C1.08707 12.1242 4.08286 9.04815 7.80809 8.97037Z\" fill=\"#FAFAFA\"\u002F>\n\u003C\u002Fsvg>\n",{"isInternal":190,"label":403,"url":404},"TikTok","https:\u002F\u002Fwww.tiktok.com\u002F@thorchaincontact",{"_key":406,"icon":407,"link":409},"1a3ef15ea167",{"isCustom":29,"raw":408},"\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"3.84 32.0 376.768 448.0\">\n  \u003C!-- Font Awesome Free 6.5.1 - https:\u002F\u002Ffontawesome.com\u002Flicense\u002Ffree -->\n  \u003Cpath fill=\"#ffffff\" d=\"M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z\"\u002F>\n\u003C\u002Fsvg>\n",{"isInternal":190,"label":410,"url":411},"Apple","https:\u002F\u002Fpodcasts.apple.com\u002Fus\u002Fpodcast\u002Fthorchain-weekly-live\u002Fid1719319894",{"_key":413,"icon":414,"link":416},"13eff6c10247",{"isCustom":29,"raw":415},"\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 167.5 167.5\">\n  \u003C!-- Spotify icon - circle with sound waves -->\n  \u003Cpath fill=\"#ffffff\" d=\"M83.7 0C37.5 0 0 37.5 0 83.7c0 46.3 37.5 83.7 83.7 83.7 46.3 0 83.7-37.5 83.7-83.7S130 0 83.7 0zM122 120.8c-1.4 2.5-4.6 3.2-7 1.7-19.8-12-44.5-14.7-73.7-8-2.8.5-5.6-1.2-6.2-4-.2-2.8 1.5-5.6 4-6.2 32-7.3 59.6-4.2 81.6 9.3 2.6 1.5 3.4 4.7 1.8 7.2zM132.5 98c-2 3-6 4-9 2.2-22.5-14-56.8-18-83.4-9.8-3.2 1-7-1-8-4.3s1-7 4.6-8c30.4-9 68.2-4.5 94 11 3 2 4 6 2 9zm1-23.8c-27-16-71.6-17.5-97.4-9.7-4 1.3-8.2-1-9.5-5.2-1.3-4 1-8.5 5.2-9.8 29.6-9 78.8-7.2 109.8 11.2 3.7 2.2 5 7 2.7 10.7-2 3.8-7 5-10.6 2.8z\"\u002F>\n\u003C\u002Fsvg>\n",{"isInternal":190,"label":417,"url":418},"Spotify","https:\u002F\u002Fopen.spotify.com\u002Fshow\u002F1uMxtHcV3PCvB9gf3aanjl",{"_key":420,"icon":421,"link":423},"7bc02d3469b4",{"isCustom":29,"raw":422},"\u003Csvg width=\"512\" height=\"512\" viewBox=\"27.648 27.648 456.704 456.704\" fill=\"none\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n\u003Cpath d=\"M332 484H237C237.091 428.549 215.073 375.348 175.82 336.181C136.61 296.99 83.4372 274.982 28 275.001V180.001C108.645 179.915 186.005 211.946 242.985 269.016C300.081 325.977 332.117 403.349 332 484Z\" fill=\"#ffffff\"\u002F>\n\u003Cpath d=\"M160.998 417.976C160.77 449.654 138.227 476.773 107.124 482.785C76.021 488.798 44.9948 472.034 32.9773 442.723C20.9598 413.412 31.2881 379.693 57.6599 362.141C84.0317 344.589 119.124 348.078 141.524 370.478C154.111 383.066 161.126 400.175 160.998 417.976Z\" fill=\"#ffffff\"\u002F>\n\u003Cpath d=\"M483.999 484H389.298C389.423 388.232 351.491 296.365 283.9 228.736C216.462 160.965 124.902 122.918 29.4476 123.001H28V28.0004H29.4476C150.03 27.8503 265.7 75.9205 350.851 161.571C436.265 246.97 484.188 363.024 483.999 484Z\" fill=\"#ffffff\"\u002F>\n\u003C\u002Fsvg>\n",{"isInternal":190,"label":424,"url":425},"RSS.com","https:\u002F\u002Frss.com\u002Fpodcasts\u002Fthorchain\u002F","Socials",{"anchor":28,"getParameters":28,"isInternal":190,"label":428,"openInNewTab":190,"theme":429,"title":28,"url":430},"Launch App","important","https:\u002F\u002Fswap.thorchain.org\u002F",{"data":432},{"favicon":433},{"alt":47,"assetId":434,"caption":28,"crop":28,"height":435,"hotspot":28,"lqip":436,"width":435},"image-b4749092773d8c5a7fb87c546187705551578dbc-300x300-svg",300,"data:image\u002Fpng;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEe0lEQVR4nHXV708TdxwH8BMrg6AbMrQKYoeCQKnS6eKyzQGaLFuymP16si2L2Y8HwwdLtof+ypgmyx65+MxEGdZEFBYXnVAdblbBOaBIoaXQFq4\u002FaG2v7ZXeXe+ud70e7wUGUyp+\u002FoBXPp\u002Fvj\u002FeHIJ4sQFNEUtoix9T+Yo\u002FnRAk5YS4NOEhtcIQtCw+y5dF+cmv0jnlr7I\u002FjuuTN5srUdW0TLBpixfKhYO04rS90hQ6vcwe6ikmvo8Trim4IOIRNwRGlLDygVFD9gi5+J1pJ9zpqWXPn64z58AHpT30TLAXLMQsK1jj5lwsd8ZNFLsq6zh1k10+T6os+NzbOjGNTyIbyyCAqovdRTd\u002FD3uRd9b1UP\u002Fup2D\u002F8jnDr1B7+ym6dr30RBTTECKdfY0ueLHTEnUWTEfl5TxDrSS+WwM0hG6ooK16jrfiYHUWr4MIZyY1v0gNyo3jDWZ++8kO9ZKr7b3w7tHkj3OH8UWa40EnLRZMUlsCNPje2hybxBjWBQ7MenOZncFum8UBJ4Kw8hY9EC4ziVak+fdlqyJhaDOjQEoQt3bzaxnfl2zm20JnAEriB9KEh6MUX8SDOpmL4W+IQzEqgVAk9mQi+FAaxm++GXvwVBqmD3aVc7KxX2puJvIfScY1NdOSPseqTYJnXj4ORIC7xScwoMuS5OYhzWTxQZvGdYMderhd1\u002FLUFcKfUoTYoJkdDtv0YsWpYuqmxidF8O4fcDl8N+fATE8NkJg1+LotxJYVTwhTeZPpQw5pRuwTKHWhQTJRRbesmVg3LXs2oKOSC82e42e\u002FB\u002Fsg0TnMULBKDM0IAbzND2DF7G9VszzJwV+aCYFTOkcQqq8xpbKKyEjh\u002Fy7rgBD6MT+NHLohDzDgMiT5sm+1dCVSMynl2vkP2WWCpz42akAstiQAuCTG0pkg0Jv95VodKQ\u002FY8M9+hV2NbeeTKwDQ+ic3gusjgUVbGkMLiBO9GI9uHutwzzFzgG5Tz0\u002FMdmjWjaSoX3OL14\u002F1ICJd5BlFVgQqAm1PQm4nhK\u002F4hjNytHNBEGbNt3USeVTyusQnLns3GqRDeCoXRxrIIZTOQ5lTQagZjSgqmdBCfpazLQalD3ZkxOYzZX44SxIjYtHqU78y3swsPu8QVxb5AFD8nWThlGQFFxoCcQrsQwbecG+8yVuxJWpaNbJA62J2Zi52GjKmJIOwpbd4o15I\u002FlrSuc9KykaRxJMaghxdgFlI4zcbweYJEc3wMhvgAttN3c29ZWvh6aVOLIXVOuxgOtP65scTJ8smE82BgVv4+zuAITeODSBCvhN3Y9mgMWxbT5iXa8iQo1Qpd4\u002FXpy62Pw2EhvnwFL0zEdu9wxU81+hLWff4IW+f3q2V+z1PxtQAmetVqpputSV0bqhOuturlLuPj+FosnQ8FVR5ar\u002FOEW0rc\u002Fs7iKdJR4nNRGwLj\u002FP8BG73P6+IWaj5gq5I3Oqu537+u536r0yEHW7YC7KR27YS3qZicOlbidXWXBuykNmRjysKDTHn4HlkR\u002F6tbR\u002FcerZo1N1VST6+AfwFKhhGPaiwFVAAAAABJRU5ErkJggg==",{"data":438,"sourceMap":-1},{"author":439,"date":448,"globalSeo":449,"image":463,"readingTimeLabelTemplate":468,"related":469,"seo":587,"seoImage":593,"slices":594,"tags":2714,"title":591},{"avatar":440,"name":446,"slug":447},{"alt":441,"assetId":442,"caption":28,"crop":28,"height":443,"hotspot":28,"lqip":444,"width":445},"D5 Sammy profile picture","image-86c3a64859610d85d75ede74c97432176ef1328b-444x500-svg",500,"data:image\u002Fpng;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAXCAYAAAALHW+jAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGLUlEQVR4nC2VC28U1xWA9we2jdoIqagpjZqWSg4RImpRShKUuARwEhsMxgpgYoMfGLADtoOx1xiv7RgbGxu\u002FH+vZmZ33zM7O+87c995q0\u002F6A8+nok853Co1GI2g0uCIEl4XggHPMBfMhw1sJAWMmTnrKOLpeQcFlHQbfqDDsLKPksUThW5dRK+McsQbneaPRqArBdwpC8IoQXG80WMhZAimWEppP2TjqdFDUVSP5gsXwtk3hikfhik2yJZWkE1WcPjVINmtRdBRzliIheCyEsAtCCF0IFnEWAIo2fJyMGijqUmDYVkXxgEHgW4fANZOAcZ2ASY1kswoBRZ3AVZvkSzoBL0yGtkLOUiyEwAXBGeQ0yAhc9lDyxEBxj5rWLuk166ri2P1SHP6koei2ltf\u002FbcHgGx3F96oYTBuM6DYjuoPTcR3FD0yKduMGh6wgeEYo2vRx8rAJ0\u002FPgslU3WtztnbPVV2u3jl9v9yvrW19o+zt\u002Ftg3lUyOuteko7jcoXNMoXDFxMqCh6KaKklGHESMrMKxkOHlow7BTg2GHBv2vTEc7ay2vX5DHl4alB8UflVsjLfL9sT9Kk6VTytrGJ4audalpcF9DYbeB4n4NJwMGin80CVxyCjRfdFB03URhh4biHhlFN\u002FWjo8+ssVKrurpfMg+qC86brW5tbuXC0dDzPx13Dp+szry+oNTMVgNGXSpOR6skHTVxMmzgpF8qwOh+GSVDMgETCgEjMop7jPWddv3ORKe5q2xHjIYwA7uRJN9VHk61yN8Nfqy8XL4o+267jOIHFZyOVQlctSh66+LotlLIgyuHGIxJJHtZIeBnFYMpdX3vSeWH52P6tqyDDBF6bOjxyPyo2j3eKU8sXNEU+ZKWBZ0VFPdVcPpcpVgyGZF8FPWahcw7X2luSOGCStC6QfJf5H15stw3u1iZWtdqi\u002Fu1oKd4YFwbm6tML\u002FdpauXTemz\u002Fw8\u002FrX5pN5zh5ZFIs1RhRIhTftwpZ\u002FSuN5vMGJ5KDs5KFkgFV1oaUe9M\u002FS\u002F\u002FsXVb\u002F3r2qt9xervRMlyqHxzesyDyVAOcPALinAxi2OySfdzitRYwoAMX37AIKr5sUvvNovuhBv93N65\u002FbrnnFevRqUP\u002FwxkvrZPusdfbulNo1MSe\u002FXHtcfbdz3pHLH4SR85mHkkGT5L9YFFfqFO3HMLxpF2DwrUnAiIOCG27unXOz2hkPeJe9lb1XXsf4Vu3p8ra7dvTOXjmUjKm1jWrfi+vy0NQ59c1mW9W1bsp5cNdoniSF75w86FAKuf+5CcN2EwaXzNz7xAPOX2IU\u002FKe+J5e8oYU9e0+1fUqTDKIkNdw1t7TaavY8+6vWOfyh\u002FGz2dKUsdVTTeFEn+RsZRr2HBRi0GSjus6B\u002F0c3cj8Ks9nGIwu\u002FtA+mB\u002Fmj+VWVTcQyE85QRKYHRnaCunUq3N38Xj7z4rXnr8QllYuGipBvDcp48r5CspBRQ2KHibNJG4Q9+HlwLcPrUJqBYNcynUvHtzOH89rrkefMuirv9zP1bAuzf4Ng8kepKi7ux87W5vj+sO25RQ8kzg+LDqICi2wrJZjSKNmuMyDHFxx4BJSX0R6WlrSH54UybenhwJgDOBymwT6Sp9R4C9skE+l97ECwGWWaEEGwYBBQNTq28QOFKDYNJg8I3BsUHPgZTNRT1VrOoV945uKr+NNNiHOx\u002FFGS1M1Hmng5S6\u002FcQ2O9BGLTGDJdzTmsJhUs6zTfcZsIKnMeIwK2IpGMmjO4YuX\u002FVgdGARfIlIwpeGJr+SAu9JxqO75l5\u002FXw9td+HwH4\u002Fg+F3ESNlwMiRh8G0ybCSCsF4s9gNzgGhcDdG8aCJwlsGzuZqjLoRZ37MmgrSSQsGV53cOxdk9X+lMGgLCXjmU7RTJ\u002Fm8TuBrh7MQCSFEs9iJEJxynjOKlZRkJQenRZuiLY\u002FivQCD6RoKu+oo+jbAyaBP4GrM8FHCcBO2oBMwYzKipk3E\u002F4FcEoLX\u002FwclnNN6TtFugLOi07zNZidRdNciYMyncCVk+DCi+MCjcFnHYM5k+Dhu8JwJIagQIm0Cm9+uLISIhBCNXxWwjDJSTXFatPLwWjn3W49RcEmDwWULBt83yy6TbE5jREs4h+zXMSGaDg\u002F\u002FC4XRKbSqSG5fAAAAAElFTkSuQmCC",444,"D5 Sammy","d5sammy","2023-04-03",{"description":450,"noFollow":190,"noIndex":190,"ogImage":451,"ogLocale":28,"ogSiteName":208,"ogTitle":450,"ogType":457,"structuredContent":28,"title":208,"titleTemplate":458,"twitterCard":459,"twitterCreator":28,"twitterDescription":460,"twitterImage":461,"twitterSite":462,"twitterTitle":450},"The World's Leading Bitcoin DEX",{"alt":452,"height":453,"type":454,"url":455,"width":456},"THORChain - The World's Leading Bitcoin DEX",630,"image\u002Fpng","https:\u002F\u002Fcdn.sanity.io\u002Fimages\u002F355nlzcp\u002Fproduction\u002Fd7b83200f512f7d535d5ac7bc7fcb38be7a63ce9-1200x630.png",1200,"website","%s | THORChain","summary_large_image","Cross-chain liquidity protocol supporting BTC, ETH, Monero and more.",{"alt":28,"height":453,"type":454,"url":455,"width":456},"@THORChain",{"alt":47,"assetId":464,"caption":28,"crop":28,"height":465,"hotspot":28,"lqip":466,"width":467},"image-140ca2a10bbcbb678f9ee56d0a7b026494d9749e-1600x900-png",900,"data:image\u002Fpng;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB\u002FCa1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABnklEQVR4nI2T22sTQRSH8\u002F\u002F6XlAsvlVQRDTiW4S6Eiy2BYuotZRelGgSsGkamxjbYmPNNm2zYS\u002FZ2dm5fNLNm11IzvPMN79zzjcFcsuClRh9jpYNVFJBiS+opIZRJ2BCQOfeLOTzJFadIqN1Am8R78ohHDkk4SpK7GDSDthg8vB0oMHqC1S8jn\u002F5mKPjB+y3H9Fq3+Psz0PGvoOKP2JUD1A3oIWbrSZZAhm+ZtB\u002FSqPj8LW5zGZ1gUbrNv5VERWvodMO1sbTgdaE6KRBGq3iui\u002FZ3f\u002FAu2qFjVqJn907RN4zlNicALNZTgUG6OQ7afiKc\u002FcJn+orlLerbNSX+NGez1KLaAuTdmcHKvGNNHiON1igflhmp7lLs+uwdzBHq3Of4fA9Oj0GK2YBjtHyABUtE41KnJwucvjrBYO\u002Fd3F7t+j1ioxG22jVn2UpZIeut6yTGkn0Fu+yjNsvElzMEQ\u002Fnif0VpGhhjZ8Z8X\u002Fle4jEahct95DjLUSwROKXSKM3KFHBqLPM1Rk9nLSOTbHGw6TtTGYlPme\u002FxqjfYKLcdNfAf72YQH8xPXBDAAAAAElFTkSuQmCC",1600,"{{minute}} min read",{"items":470,"title":586},[471,483,492,501,519,532,541,550,559,568],{"author":472,"date":474,"image":475,"score":476,"slug":477,"tags":478,"title":482},{"avatar":473,"name":446,"slug":447},{"alt":441,"assetId":442,"caption":28,"crop":28,"height":443,"hotspot":28,"lqip":444,"width":445},"2025-05-29",{"alt":47,"assetId":464,"caption":28,"crop":28,"height":465,"hotspot":28,"lqip":466,"width":467},1,"thorchain-bare-metal-validator-migration-to-cosmo-operator",[479],{"name":480,"slug":481},"Node Setup","node-setup","THORChain Bare-Metal Validator  —  Migration to Cosmo-Operator",{"author":484,"date":486,"image":487,"score":476,"slug":488,"tags":489,"title":491},{"avatar":485,"name":446,"slug":447},{"alt":441,"assetId":442,"caption":28,"crop":28,"height":443,"hotspot":28,"lqip":444,"width":445},"2023-11-29",{"alt":47,"assetId":464,"caption":28,"crop":28,"height":465,"hotspot":28,"lqip":466,"width":467},"thorchain-bare-metal-validator-copy-chain-data",[490],{"name":480,"slug":481},"THORChain Bare-Metal Validator  —  Copy Chain Data",{"author":493,"date":495,"image":496,"score":476,"slug":497,"tags":498,"title":500},{"avatar":494,"name":446,"slug":447},{"alt":441,"assetId":442,"caption":28,"crop":28,"height":443,"hotspot":28,"lqip":444,"width":445},"2023-09-08",{"alt":47,"assetId":464,"caption":28,"crop":28,"height":465,"hotspot":28,"lqip":466,"width":467},"thorchain-bare-metal-validator-wireguard-monitoring",[499],{"name":480,"slug":481},"THORChain Bare-Metal Validator  —  WireGuard Monitoring",{"author":502,"date":510,"image":511,"score":476,"slug":515,"tags":516,"title":518},{"avatar":503,"name":508,"slug":509},{"alt":504,"assetId":505,"caption":28,"crop":28,"height":506,"hotspot":28,"lqip":507,"width":506},"Nine Realms logo","image-9b2d5f33e9cf6e171a4c3613b9d863601e8c4f8d-1000x1000-jpg",1000,"data:image\u002Fjpeg;base64,\u002F9j\u002F2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj\u002F2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj\u002FwAARCAAUABQDASIAAhEBAxEB\u002F8QAGQABAQEAAwAAAAAAAAAAAAAAAAUDAQYI\u002F8QAJBAAAgIBAwQCAwAAAAAAAAAAAQIDBAAFERIhIjFBBhMUcYH\u002FxAAXAQADAQAAAAAAAAAAAAAAAAACAwQB\u002F8QAGxEAAgMBAQEAAAAAAAAAAAAAAQIAAyExQVH\u002F2gAMAwEAAhEDEQA\u002FAPQ9+3eu6w1HTJkiSJA0khXlsT6ziWlrNSrLJHfWZx3bGPzmejTQ1PkGowSng0jAx8um4y9esw1qskk7qECnyfOWOxrIRRmedgjdmelXVuafDMzLzZe4A+D7xkn4xAj6XzMbgNIxH63xirUVXIE0HJQ12jXt1CZk7lO6sOhH9yZX0at+ZX+xppQOvGR+Q3xjHUsRUd+wT2dlVQoAUAAehjGMihz\u002F2Q==","Nine Realms","nine-realms","2023-08-24",{"alt":47,"assetId":512,"caption":28,"crop":28,"height":513,"hotspot":28,"lqip":514,"width":456},"image-e4ccfdf6d14df263f2a9839255eead9315c6dc22-1200x629-png",629,"data:image\u002Fpng;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsTAAALEwEAmpwYAAAC5UlEQVR4nCXMaU\u002FTBwDA4f8LLQgUSjkqtFmD4gHDoAhCWQHTC2m10AkuUEsPCoVWqjCgdIONDYEoalSighC1keE2WBAiBnSsRjDGDLItEY1ZMuOxvdkyk32BnyF7PsAjbNh7lI15NkQFdiJUTqLUdcSUNBCraSJe7yPR0Eyy3o9M50em9ZOsaSZxvxep2kOcqp6YfBfRuQ4icx2I1I0IG3NtiPbVElHoZFNxPTGaRuL0PqRGP0nmFjZb2ki1dCC3dKAo70BubmOzqYUkgx+pxoukqAFxQR1R+S4ii9bD\u002FFpEKsf\u002Fmc6LxHScRMunyD7pRG7rQunsId3dy\u002Fb6k2yr62WroweltRt5VScycysJpceQlDQiVjcQXdKEICqwEal2Eq31IDEfJ8XehdLXS3rrADs7B8nuuoC2b4xDgyHKBq6h+\u002FoqhcEhdnj6SK3+jGRLK9IDzUi0XsQaL0KkqoaoYjuxpR6SawKkB86SNXCJnPPD5A+PoR0dx31rjuBsmODMT7RNLuAa+4GSnitk+Pr5wLaetpBQdgyJphEhqqga8X4b8UYPKfYg2z4\u002Fz67Bq+QNh1Df\u002FJay72dwz4UJhJ\u002FQ\u002FeAJwYUlfFPz1Ix+h6F\u002FhKzmkyis7cjMfhL1XoRonZVYvY0E83oYYEv7aTIHRsi5MkHhxCyG2UWOLD7GubyKZ3kF94+PqJ25T803tzENhdgTOEWaqxN5ZSsyox8hpqyWOJODpMNNKNxB0oNnyDp3jbzQNMV3wpQurVC++pTDvz2ncnUNy\u002FIKprth9BO3+ejidbK7zrDd+yVKa4BUYxOC+KCT+Ao3Mqsfpe8Ldnx1kd0jtyicvodueYWDa7\u002Fz8cu3VL3+i8o\u002F3lDx9AXGpZ\u002FRTM+jGhlnT98QGe2nSbMHUBxwIIjNTqRVHlIcLaSd6CGz\u002FzJ7Q1MULTyk9Jc1yl\u002F9yZF\u002F3lH97j+q\u002F\u002F6XqldvMf\u002F6DMPCQ9Q3Jsk9O8qH3RfY4upAYbTxHl9yrSwd7prRAAAAAElFTkSuQmCC","bare-metal-mayanode-comprehensive-guide",[517],{"name":480,"slug":481},"Bare-Metal MAYANode: Comprehensive Guide",{"author":520,"date":522,"image":523,"score":476,"slug":528,"tags":529,"title":531},{"avatar":521,"name":508,"slug":509},{"alt":504,"assetId":505,"caption":28,"crop":28,"height":506,"hotspot":28,"lqip":507,"width":506},"2023-06-21",{"alt":47,"assetId":524,"caption":28,"crop":28,"height":525,"hotspot":28,"lqip":526,"width":527},"image-bdc46548209223c5a530ecfe6efc598f8b58de72-800x418-png",418,"data:image\u002Fpng;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsTAAALEwEAmpwYAAACCklEQVR4nGWRWVMaQRRG5ycw9sKmIBJQ2ZGdYYRhMuybg7glMTFVWcr\u002F\u002F35SDKlUGR\u002FOS\u002Ff9zr232wglcrwjmUOdFYhlSsQvypw0LaKdITLXRp7XkedXmMkCoZPcO4xQIs\u002F\u002FmKki0VyN07pFqtkjbTkk7Bnx9pRY1wvk4rJJKFl8lzXMZJE3pMqIbINI7ZqYMyfmrojaE6L2nITrczL2OR5viLZdRLb2NpssYpinZf6RqiKyLcIVl3BvhvI2qPEW6S7RzpL4aEt8dsfxfEvC8dCFFuZZ9W++FGAEB3vSV5gfGojLHpH6nHj\u002Fhqjroz0fPbtFT7dob0NksiM+2xGzRqhCFzPTwkzXDo6zKsZRuk5ApsXRhYXI9dHVMcnehtPBjrh7T2T5Gb16RI9WhIc3RJ1bdH2CyPcRF71DNt0IPIbItBDZdnAhcwNk0UVVxsSaS467PrH+A+H5V9TiC8rx0d0Vur1GVieI4kdE3gm2Osp2ArEh9lNd2si8gyx5yMoEWVugGmt0y0fb96jZC2rxHdV\u002FQLV8VGMT1MjKFFkaIQv7X7cR5xbGfsV9l0BWnSEbK2Rni+rdoa4f0R+fUetf6JvfKO8byn5CWfdBjWyskVdzZHmEyA+D5zJkwUUW95NNg6lU5xY1eEJ7z+jJC3rxE719Jbx7RS9\u002FoLyXQ5PBJ6R1h2puDtK9ozDkD\u002FMGMomHuU1HAAAAAElFTkSuQmCC",800,"bare-metal-thornode-comprehensive-guide",[530],{"name":480,"slug":481},"Bare-Metal THORNode: Comprehensive Guide",{"author":533,"date":535,"image":536,"score":476,"slug":537,"tags":538,"title":540},{"avatar":534,"name":446,"slug":447},{"alt":441,"assetId":442,"caption":28,"crop":28,"height":443,"hotspot":28,"lqip":444,"width":445},"2023-06-14",{"alt":47,"assetId":464,"caption":28,"crop":28,"height":465,"hotspot":28,"lqip":466,"width":467},"thorchain-validators-re-creating-from-backups",[539],{"name":480,"slug":481},"THORChain Validators  —  Re-creating From Backups",{"author":542,"date":544,"image":545,"score":476,"slug":546,"tags":547,"title":549},{"avatar":543,"name":446,"slug":447},{"alt":441,"assetId":442,"caption":28,"crop":28,"height":443,"hotspot":28,"lqip":444,"width":445},"2023-04-19",{"alt":47,"assetId":464,"caption":28,"crop":28,"height":465,"hotspot":28,"lqip":466,"width":467},"thorchain-bare-metal-validator-part-3-mayas-chocolate",[548],{"name":480,"slug":481},"THORChain Bare-Metal Validator  —  Part 3: Maya’s Chocolate",{"author":551,"date":553,"image":554,"score":476,"slug":555,"tags":556,"title":558},{"avatar":552,"name":446,"slug":447},{"alt":441,"assetId":442,"caption":28,"crop":28,"height":443,"hotspot":28,"lqip":444,"width":445},"2023-03-07",{"alt":47,"assetId":464,"caption":28,"crop":28,"height":465,"hotspot":28,"lqip":466,"width":467},"thorchain-validator-migration-the-exhaustive-guide",[557],{"name":480,"slug":481},"THORChain Validator Migration — The Exhaustive Guide",{"author":560,"date":562,"image":563,"score":476,"slug":564,"tags":565,"title":567},{"avatar":561,"name":446,"slug":447},{"alt":441,"assetId":442,"caption":28,"crop":28,"height":443,"hotspot":28,"lqip":444,"width":445},"2023-02-08",{"alt":47,"assetId":464,"caption":28,"crop":28,"height":465,"hotspot":28,"lqip":466,"width":467},"thorchain-bare-metal-validator-part-1-hardware",[566],{"name":480,"slug":481},"THORChain Bare-Metal Validator  —  Part 1: Hardware",{"author":569,"date":577,"image":578,"score":476,"slug":582,"tags":583,"title":585},{"avatar":570,"name":575,"slug":576},{"alt":571,"assetId":572,"caption":28,"crop":28,"height":573,"hotspot":28,"lqip":574,"width":573},"Scorch profile picture","image-f6e7a9278bb46278491e33ade1d3176ea8f9d75e-400x400-jpg",400,"data:image\u002Fjpeg;base64,\u002F9j\u002F2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj\u002F2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj\u002FwAARCAAUABQDASIAAhEBAxEB\u002F8QAGQABAAMBAQAAAAAAAAAAAAAAAAUHCAQG\u002F8QAJRAAAQMDBAEFAQAAAAAAAAAAAgEDBAAFBgcREiEiJDEyYXFR\u002F8QAFwEAAwEAAAAAAAAAAAAAAAAAAgMFBP\u002FEAB4RAAICAgIDAAAAAAAAAAAAAAECAAMEERIhEzEy\u002F9oADAMBAAIRAxEAPwDm1j1WvF\u002Fy97GcYlFFhsLwcdbXyMv3+V4YpWX4QqXSPdZHIFQlQ3OQmn2lRdwizMP1YuLE+Op7ukXknyFfZans+yCO5jzzMdkHDcH5Ii+H1SbrXS0Io6g4uJTdR5bPqaW0x1RgZTh8O5TDFmUu7bob+xJtvSqR0R0\u002Fu07BGZac2geeMwFet067pWjjIVmblI5WtdgejL21Vwyy3uCU+bF9Y0OwvAvEtv2qwwrDLRe7w21cm3Hmm+kBSTZf3rulKPgrAEjuDmWOl5RToHXU0VAhx4ENqNEaBphsUEAFNkRKUpSpfUAAAT\u002F\u002F2Q==","Scorch","scorch","2022-12-06",{"alt":47,"assetId":579,"caption":28,"crop":28,"height":580,"hotspot":28,"lqip":581,"width":527},"image-8463ea383462481ff4836ddb470dac4c53ebc262-800x354-png",354,"data:image\u002Fpng;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAAsTAAALEwEAmpwYAAACJ0lEQVR4nD2OWVMaYRBFv0FgBIEZEOMyGEFAYGQTFJFdFllk0bAlJhJJoolL\u002Fv\u002FjSTmmfDjVXbdv326xcZjGp6cJRNPsRZJ8DMXZDsTwakE82wHcO0FULYSqhd\u002FwhXH7XvuQMXNv7+N5J4BQD9JshJNshRJs7cfY9MdY9+uoezrKno4zmGYtdoai51GjxyjhI1yBBK6PMVTfwf9DB6i7EZTdKGI1VceRqOCN59mOpPgQTrKu51ESFeypOvJJD1d1jHY+QMtV8OrHqP64EebeCaHuHuAKprDH8qwelhGmyhy5OsdTnaDlL9g5OWezeo2n8QVb\u002FQbL+Q1qbYJW6rCTKeCNHOHx63h8ITxayPjYkWtjLY9ZKU8RonuPqfeA3HvA2bxFqU1QWjeo3QX2yx9YWgvWsi3ckQzuUBpX9BRnsoKSKKEmijgKfWy9Jeb+A1L3F0IMnxGjF8ToL6bhC+bePbbaFLXQwdGYYekskYvXOKM5lP0k9kwTa\u002FMWuX2HvbvAMfqJ7eoP5tEz0vAFIfqPGAyeEMMXpP6jEeDST1nLNjG3vrNyscSW6+LQz1gtjJB6D0iDJyyD3zgub3E25qxeLDENnhGiscCgeYdoLY1qLlxhi5eRM22k2lekxgJz4Ro528FcGr\u002F7TfVvyIURzmwHZ3GK9XVfFGeI4hRRmiHKn5FKM1ZOB1iybVbyV296aYZUHGM6+4RkeOeG19Dz11hzI+xnE6yVGf8AdFMSgx95FAsAAAAASUVORK5CYII=","build-your-own-thorchain-validator-node-step-by-step-guide",[584],{"name":480,"slug":481},"Build Your Own THORChain Validator Node  —  Step by Step Guide","Related articles",{"description":588,"noFollow":28,"noIndex":28,"ogImage":589,"ogLocale":28,"ogSiteName":28,"ogTitle":591,"ogType":32,"structuredContent":28,"title":591,"titleTemplate":28,"twitterCard":28,"twitterCreator":28,"twitterDescription":588,"twitterImage":592,"twitterSite":28,"twitterTitle":591},"This guide is Part 2 of the THORChain bare-metal validators series, see Part 1 about building the hardware for this server.",{"alt":28,"height":465,"type":454,"url":590,"width":467},"https:\u002F\u002Fcdn.sanity.io\u002Fimages\u002F355nlzcp\u002Fproduction\u002F140ca2a10bbcbb678f9ee56d0a7b026494d9749e-1600x900.png","THORChain Bare-Metal Validator  —  Part 2: Multi-Node Using MicroK8s",{"alt":28,"height":465,"type":454,"url":590,"width":467},{"alt":28,"height":465,"type":454,"url":590,"width":467},[595,2692],{"_key":596,"_type":597,"backgroundColor":28,"disabled":190,"sliceId":28,"text":598,"withMargins":29},"71a555f2-0831-4b83-a0c3-c809ab16ad01","wysiwygSlice",[599,619,627,645,653,661,669,677,685,693,702,710,718,726,734,742,750,758,766,774,782,790,798,806,814,843,851,859,867,879,887,895,903,911,919,927,935,943,951,959,967,984,992,1000,1008,1016,1024,1032,1040,1048,1056,1064,1072,1088,1096,1104,1112,1128,1136,1144,1152,1160,1168,1176,1184,1192,1200,1208,1216,1224,1232,1240,1252,1260,1268,1288,1296,1304,1316,1324,1332,1340,1348,1356,1364,1372,1380,1388,1396,1404,1412,1420,1428,1436,1444,1452,1460,1468,1476,1484,1492,1500,1508,1516,1524,1532,1540,1548,1556,1564,1572,1580,1588,1596,1604,1623,1631,1639,1647,1655,1663,1671,1679,1687,1695,1703,1711,1719,1727,1735,1743,1751,1759,1767,1775,1783,1791,1799,1807,1815,1823,1831,1839,1847,1855,1863,1871,1879,1887,1895,1902,1910,1918,1926,1934,1941,1949,1956,1963,1970,1977,1985,1993,2000,2007,2015,2023,2031,2039,2047,2055,2063,2071,2079,2086,2094,2102,2110,2118,2126,2134,2142,2150,2158,2166,2174,2182,2190,2198,2206,2214,2222,2230,2238,2246,2253,2261,2269,2277,2285,2292,2300,2308,2316,2324,2332,2340,2348,2356,2364,2372,2380,2388,2396,2404,2412,2420,2428,2436,2444,2460,2468,2476,2484,2492,2500,2508,2516,2524,2532,2540,2548,2556,2564,2572,2580,2588,2596,2604,2612,2620,2628,2636,2644,2652,2672],{"_key":600,"_type":8,"children":601,"markDefs":615,"style":33},"a233021e1bff",[602,606,611],{"_key":603,"_type":12,"marks":604,"text":605},"00a23ec5ff3e",[],"This guide is Part 2 of the THORChain bare-metal validators series, see ",{"_key":607,"_type":12,"marks":608,"text":610},"8e5a2c897518",[609],"c61057e46e","Part 1",{"_key":612,"_type":12,"marks":613,"text":614},"f3aa76682a01",[]," about building the hardware for this server.",[616],{"_key":609,"_type":26,"link":617},{"anchor":28,"getParameters":28,"isInternal":190,"openInNewTab":28,"title":28,"url":618},"https:\u002F\u002Fblog.thorchain.org\u002Fthorchain-bare-metal-validator-part-1-hardware\u002F",{"_key":620,"_type":8,"children":621,"markDefs":626,"style":33},"bcd5bef3aea9",[622],{"_key":623,"_type":12,"marks":624,"text":625},"0c1cbe8e9dea",[],"In this guide, we will go over configuring MicroK8s on a bare-metal server, installing multiple THORChain node, sharing common external chains, and hide them behind VPN Proxy using WireGuard. This configuration is currently used to run multiple active validators on THORChain network.",[],{"_key":628,"_type":8,"children":629,"markDefs":642,"style":33},"730774514879",[630,634,638],{"_key":631,"_type":12,"marks":632,"text":633},"e9f91ada083d",[],"At time of writing (Q1–2023), it is possible to run very smoothly up to 7 validators node on a bare-metal hardware having 128 Thread CPU, 750 GB of RAM, and 20 TB of storage, as describe in the hardware ",{"_key":635,"_type":12,"marks":636,"text":610},"e1b5ba2032d4",[637],"fc8d6cf3ac",{"_key":639,"_type":12,"marks":640,"text":641},"93f950db1856",[],".",[643],{"_key":637,"_type":26,"link":644},{"anchor":28,"getParameters":28,"isInternal":190,"openInNewTab":28,"title":28,"url":618},{"_key":646,"_type":8,"children":647,"markDefs":652,"style":33},"3676dfc7c61c",[648],{"_key":649,"_type":12,"marks":650,"text":651},"3c39a0e608de",[],"This guide will also describe how to share chains with other bare-metal server. This can be used to either combine two similar bare-metal server to run up to 15 THORChain validators, or to propagate the workload on multiple less-powerful bare-metal server. For example, one could have a bare-metal dedicated to the chains-daemons, and a bare-metal dedicated to THORCHain validators. While it is possible to group multiple bare-metal together into a Kubernetes Cluster, this may cause more complication than simply sharing the daemon services to the local area network.",[],{"_key":654,"_type":8,"children":655,"markDefs":660,"style":33},"2a2a75d6ca56",[656],{"_key":657,"_type":12,"marks":658,"text":659},"c114094f8ab7",[],"In this guide, we will also be hiding our THORChain validators behind a VPN-like proxy server using WireGuard.",[],{"_key":662,"_type":8,"children":663,"markDefs":668,"style":33},"dfefd597f5bc",[664],{"_key":665,"_type":12,"marks":666,"text":667},"b4983525e36b",[],"This can be useful to hide the real location of a bare-metal server, to run it at a local data center, or even from home, for example, and may prefer the actual location to not be doxed via its IP address.",[],{"_key":670,"_type":8,"children":671,"markDefs":676,"style":33},"4a347513874f",[672],{"_key":673,"_type":12,"marks":674,"text":675},"54aab65b8624",[],"In addition, this could also help increase resiliency. If a hosting company decides to close the account for non-crypto policy or anything else, we don’t need to rebuild the whole node like if it was running in the cloud, only the Proxy Server would be affected and could be rebuilt anywhere else within minutes.",[],{"_key":678,"_type":8,"children":679,"markDefs":684,"style":33},"39bb844a833c",[680],{"_key":681,"_type":12,"marks":682,"text":683},"0f84fdf36079",[],"The WireGuard approach also saves us from the need to have any Static IP at the location of our bare-metal server. One Static IP per Validator would normally be required.",[],{"_key":686,"_type":8,"children":687,"markDefs":692,"style":33},"8b0dca67c5a3",[688],{"_key":689,"_type":12,"marks":690,"text":691},"a914ad88ee4a",[],"I also want to thank both Hildisvíni Óttar and Scorch who participated in great discussion with me at the time of configuring this server, as well as Multipartite for his great analysis and feedback.",[],{"_key":694,"_type":8,"children":695,"markDefs":700,"style":701},"4d6ebe0c2d97",[696],{"_key":697,"_type":12,"marks":698,"text":699},"3ced4e2810ed",[],"MicroK8s",[],"h4",{"_key":703,"_type":8,"children":704,"markDefs":709,"style":33},"54214849f77d",[705],{"_key":706,"_type":12,"marks":707,"text":708},"ddf83898e6cc",[],"I chose to give a try to MicroK8s this time instead of K3s, I was not familiar with it but it was highly recommended by a few.",[],{"_key":711,"_type":8,"children":712,"markDefs":717,"style":33},"13f55a0c79dd",[713],{"_key":714,"_type":12,"marks":715,"text":716},"54b0bb3b9d8b",[],"Note: Before installation, it is recommended that the server get a reserved IP from the LAN DHCP server. MicroK8s is using the LAN IP hardcoded in some of its configuration and may give some problem if the it get assigned a different IP from the DHCP server in the future.",[],{"_key":719,"_type":8,"children":720,"markDefs":725,"style":33},"415a9cdd24a2",[721],{"_key":722,"_type":12,"marks":723,"text":724},"d9dcfbc48d13",[],"Installation:",[],{"_key":727,"_type":8,"children":728,"markDefs":733,"style":33},"9218a935fd99",[729],{"_key":730,"_type":12,"marks":731,"text":732},"f57e57ce5fb6",[],"sudo snap install microk8s --classic --channel=1.28\u002Fstable",[],{"_key":735,"_type":8,"children":736,"markDefs":741,"style":33},"f813bf35c92e",[737],{"_key":738,"_type":12,"marks":739,"text":740},"812dd0a9d42c",[],"Update (later):",[],{"_key":743,"_type":8,"children":744,"markDefs":749,"style":33},"46ba1eaddd53",[745],{"_key":746,"_type":12,"marks":747,"text":748},"0b629b5f9b08",[],"If later on we want to update, for example from v1.26 to v1.28:",[],{"_key":751,"_type":8,"children":752,"markDefs":757,"style":33},"364342413e29",[753],{"_key":754,"_type":12,"marks":755,"text":756},"937ec2cc0613",[],"sudo snap refresh microk8s --classic --channel=1.28\u002Fstable",[],{"_key":759,"_type":8,"children":760,"markDefs":765,"style":33},"88bada55e743",[761],{"_key":762,"_type":12,"marks":763,"text":764},"4986f4e98f39",[],"Confirm Installation:",[],{"_key":767,"_type":8,"children":768,"markDefs":773,"style":33},"5953a6a9c389",[769],{"_key":770,"_type":12,"marks":771,"text":772},"7f73e53ad45b",[],"sudo microk8s status\nsudo microk8s kubectl get nodes",[],{"_key":775,"_type":8,"children":776,"markDefs":781,"style":701},"1eb534776f49",[777],{"_key":778,"_type":12,"marks":779,"text":780},"b17a20b60e2e",[],"MicroK8s — Add-on",[],{"_key":783,"_type":8,"children":784,"markDefs":789,"style":33},"6a4c728774ea",[785],{"_key":786,"_type":12,"marks":787,"text":788},"d5f1f631a7da",[],"Some add-ons need to be enabled in MicroK8s to support our configuration.",[],{"_key":791,"_type":8,"children":792,"markDefs":797,"style":33},"9cd5749f241f",[793],{"_key":794,"_type":12,"marks":795,"text":796},"1a8703da1e0e",[],"This is not required for additional kube node to a cluster, add-ons will be propagated to all nodes via the cluster.",[],{"_key":799,"_type":8,"children":800,"markDefs":805,"style":33},"0ecfdba0e057",[801],{"_key":802,"_type":12,"marks":803,"text":804},"87479121618e",[],"Enable Add-ons (dns, hostpath-storage, metrics-server):",[],{"_key":807,"_type":8,"children":808,"markDefs":813,"style":33},"176fc0aaf932",[809],{"_key":810,"_type":12,"marks":811,"text":812},"44fed464bd01",[],"sudo microk8s enable dns hostpath-storage metrics-server",[],{"_key":815,"_type":8,"children":816,"markDefs":842,"style":33},"eb95336fd5b4",[817,822,826,830,834,838],{"_key":818,"_type":12,"marks":819,"text":821},"92a873b9eda8",[820],"strong","dns",{"_key":823,"_type":12,"marks":824,"text":825},"154182c6d8e0",[]," — is required for hostnames between pods, it is important that this is installed before the first namespace\u002Fpod is created on the server.\n",{"_key":827,"_type":12,"marks":828,"text":829},"3d56bd0992ca",[820],"hostpath-storage",{"_key":831,"_type":12,"marks":832,"text":833},"4cda3ca2fd83",[]," — is required to put pod storage on host NVMe.\n",{"_key":835,"_type":12,"marks":836,"text":837},"53b55138d444",[820],"metrics-server",{"_key":839,"_type":12,"marks":840,"text":841},"726fbb49a3b7",[]," — is required to run “kubectl top node”.",[],{"_key":844,"_type":8,"children":845,"markDefs":850,"style":33},"8866169e0e8b",[846],{"_key":847,"_type":12,"marks":848,"text":849},"f260ef43dc2a",[],"Enable Add-ons (MetalLB):",[],{"_key":852,"_type":8,"children":853,"markDefs":858,"style":33},"e521bccd1208",[854],{"_key":855,"_type":12,"marks":856,"text":857},"c26150c7b22e",[],"sudo microk8s enable metallb",[],{"_key":860,"_type":8,"children":861,"markDefs":866,"style":33},"f8820a9e2777",[862],{"_key":863,"_type":12,"marks":864,"text":865},"c18a19dca30f",[],"This will prompt to enter an IP range for MetalLB, we can leave this empty for now, or enter any fake IP as a place holder easier to modify later: 1.2.3.4\u002F32",[],{"_key":868,"_type":8,"children":869,"markDefs":878,"style":33},"887ded65463b",[870,874],{"_key":871,"_type":12,"marks":872,"text":873},"8bf2c0756796",[820],"MetalLb",{"_key":875,"_type":12,"marks":876,"text":877},"5960562bb32e",[]," — is required to assign IP to specific nodes.",[],{"_key":880,"_type":8,"children":881,"markDefs":886,"style":701},"08fd9df7b518",[882],{"_key":883,"_type":12,"marks":884,"text":885},"65a549d1bf13",[],"MicroK8s — Join Cluster (Optional — Additional Cluster Node Only)",[],{"_key":888,"_type":8,"children":889,"markDefs":894,"style":33},"1dce40612707",[890],{"_key":891,"_type":12,"marks":892,"text":893},"6e1282cb2556",[],"This step is only required when combining multiple bare-metal server into a cluster of kubernetes nodes. The whole setup can be followed with only one bare-metal server, and an additional server can be added to the cluster afterward.",[],{"_key":896,"_type":8,"children":897,"markDefs":902,"style":33},"94bc55d12a53",[898],{"_key":899,"_type":12,"marks":900,"text":901},"9bf7cd9b7de8",[],"Limited use of Clusters — In this setup, because we are using the hostpath-storage to store the data of our THORChain pods, we can’t leverage the High Availability functionality of MicroK8s, but a Cluster can still allow our Pods from multiple bare-metal server to see each other. A THORChain Node on one bare-metal server could point to chains-daemons running on a different bare-metal server if they are in the same Cluster.",[],{"_key":904,"_type":8,"children":905,"markDefs":910,"style":33},"32169c394dd7",[906],{"_key":907,"_type":12,"marks":908,"text":909},"c56f2c9dfd2c",[],"After going the Cluster route, I opted to simply publish the Chains-daemon service to the LAN instead.",[],{"_key":912,"_type":8,"children":913,"markDefs":918,"style":33},"3609267832ba",[914],{"_key":915,"_type":12,"marks":916,"text":917},"ebbc601422c1",[],"Configure Hosts files (Optional)",[],{"_key":920,"_type":8,"children":921,"markDefs":926,"style":33},"9feb1f0b97a4",[922],{"_key":923,"_type":12,"marks":924,"text":925},"aaafba9ca105",[],"All Servers need to be reachable from others via their hostnames to be linked via a Cluster.",[],{"_key":928,"_type":8,"children":929,"markDefs":934,"style":33},"e2594de4cb5a",[930],{"_key":931,"_type":12,"marks":932,"text":933},"a562459aa7ef",[],"This can be done bin adding them to the hosts file on all servers.",[],{"_key":936,"_type":8,"children":937,"markDefs":942,"style":33},"ef7b3ba56887",[938],{"_key":939,"_type":12,"marks":940,"text":941},"80d3cf1f63ff",[],"sudo nano \u002Fetc\u002Fhosts",[],{"_key":944,"_type":8,"children":945,"markDefs":950,"style":33},"5659c323ab7d",[946],{"_key":947,"_type":12,"marks":948,"text":949},"2daa81fa5eac",[],"Join Existing MicroK8s Cluster",[],{"_key":952,"_type":8,"children":953,"markDefs":958,"style":33},"062763af9ac1",[954],{"_key":955,"_type":12,"marks":956,"text":957},"79e05fae0223",[],"\u002F\u002F (On the existing Node)\nsudo microk8s add-node\n\u002F\u002F This will return the command with the Token to be run on the new Node.\n\n\u002F\u002F (On the new Node)\nmicrok8s join \u003CIP>:25000\u002F\u003CToken>\n\n\u002F\u002F Verify (On the new Node)\nsudo microk8s kubectl get node\nsudo microk8s status",[],{"_key":960,"_type":8,"children":961,"markDefs":966,"style":33},"543dbeb9c194",[962],{"_key":963,"_type":12,"marks":964,"text":965},"900c955e3f7a",[],"We can see via the status command that required add-ons were enabled on the new kubernetes node by joining the cluster.",[],{"_key":968,"_type":8,"children":969,"markDefs":983,"style":33},"3a5ebef13a57",[970,974,979],{"_key":971,"_type":12,"marks":972,"text":973},"1fb1d00f1785",[],"Note: If getting the error “",{"_key":975,"_type":12,"marks":976,"text":978},"da24307cfe7b",[977],"em","Connection failed. The hostname (xxxx) of the joining node does not resolve to the IP “x.x.x.x”. Refusing join (400).",{"_key":980,"_type":12,"marks":981,"text":982},"3526c76ddefd",[],"” It means that our hostname can’t be resolved by each other, review hosts files.",[],{"_key":985,"_type":8,"children":986,"markDefs":991,"style":701},"8e33903094b7",[987],{"_key":988,"_type":12,"marks":989,"text":990},"61b4fec9db75",[],"Kube Environment Configuration",[],{"_key":993,"_type":8,"children":994,"markDefs":999,"style":33},"25b3442ba646",[995],{"_key":996,"_type":12,"marks":997,"text":998},"55f43fbb7e0c",[],"This configuration allows kube client and tools (such as k9s) to interact with our Kube node\u002Fcluster.",[],{"_key":1001,"_type":8,"children":1002,"markDefs":1007,"style":33},"98df68f1bb60",[1003],{"_key":1004,"_type":12,"marks":1005,"text":1006},"86e2b111305f",[],"# Create Folder if it doesn't exist\nmkdir ~\u002F.kube\n\n\u002F\u002F Export Kube Config\nsudo microk8s config > .\u002F.kube\u002Fconfig\n\n\u002F\u002F Edit bashrc\nnano .bashrc",[],{"_key":1009,"_type":8,"children":1010,"markDefs":1015,"style":33},"cfe225c7d99a",[1011],{"_key":1012,"_type":12,"marks":1013,"text":1014},"f65a959e36ff",[],"Add the following lines in .bashrc and save file:",[],{"_key":1017,"_type":8,"children":1018,"markDefs":1023,"style":33},"fb56d4a65d15",[1019],{"_key":1020,"_type":12,"marks":1021,"text":1022},"3463366eded1",[],"# Config for K9s\nexport KUBECONFIG=~\u002F.kube\u002Fconfig\n# Use nano instead of vi as default editor\nexport KUBE_EDITOR=\"nano\"\n# Autocomplete kubectl\nsource \u003C(kubectl completion bash)",[],{"_key":1025,"_type":8,"children":1026,"markDefs":1031,"style":33},"0a17b09e3b33",[1027],{"_key":1028,"_type":12,"marks":1029,"text":1030},"777ca9cf9818",[],"\u002F\u002F Reload bashrc to apply the changes to the current session\nsource .bashrc",[],{"_key":1033,"_type":8,"children":1034,"markDefs":1039,"style":701},"d2729468adce",[1035],{"_key":1036,"_type":12,"marks":1037,"text":1038},"a574558aa015",[],"Kubectl",[],{"_key":1041,"_type":8,"children":1042,"markDefs":1047,"style":33},"780af76fbc80",[1043],{"_key":1044,"_type":12,"marks":1045,"text":1046},"989d554725cb",[],"This allows to use the kubectl command directly without prefixing it with microk8s every time. It is also required to run some of the THORChain scripts which calls kubectl directly.",[],{"_key":1049,"_type":8,"children":1050,"markDefs":1055,"style":33},"9bb03af5a479",[1051],{"_key":1052,"_type":12,"marks":1053,"text":1054},"dbeeb422a485",[],"sudo snap install kubectl --classic",[],{"_key":1057,"_type":8,"children":1058,"markDefs":1063,"style":701},"e6d3501ab79e",[1059],{"_key":1060,"_type":12,"marks":1061,"text":1062},"8cfeedccbeaf",[],"K9s Console (Optional)",[],{"_key":1065,"_type":8,"children":1066,"markDefs":1071,"style":33},"f89446a2508c",[1067],{"_key":1068,"_type":12,"marks":1069,"text":1070},"ae41668afff7",[],"K9s is a nice and powerfull console to monitor and interact with the pods of our cluster.",[],{"_key":1073,"_type":8,"children":1074,"markDefs":1084,"style":33},"57b564cccb41",[1075,1079],{"_key":1076,"_type":12,"marks":1077,"text":1078},"3713652b18cd",[],"Copy latest Linux x86_64 release path from: ",{"_key":1080,"_type":12,"marks":1081,"text":1083},"5eeb35e28ed8",[1082],"2a4e14d535","https:\u002F\u002Fgithub.com\u002Fderailed\u002Fk9s\u002Freleases",[1085],{"_key":1082,"_type":26,"link":1086},{"anchor":28,"getParameters":28,"isInternal":190,"openInNewTab":28,"title":28,"url":1087},"https:\u002F\u002Fgithub.com\u002Fderailed\u002Fk9s\u002Freleases?ref=blog.thorchain.org",{"_key":1089,"_type":8,"children":1090,"markDefs":1095,"style":33},"3def3a4fb77a",[1091],{"_key":1092,"_type":12,"marks":1093,"text":1094},"226f70f7d940",[],"\u002F\u002F Go to Home Directory\ncd\n\n\u002F\u002F Download\nwget https:\u002F\u002Fgithub.com\u002Fderailed\u002Fk9s\u002Freleases\u002Fdownload\u002Fv0.27.3\u002Fk9s_Linux_amd64.tar.gz\n\n\u002F\u002F Extract\ntar -xvzf k9s_Linux_amd64.tar.gz\n\n\u002F\u002F Move to Binary folder\nsudo mv k9s \u002Fbin\n\n\u002F\u002F Clean Up\nrm LICENSE README.md k9s_Linux_amd64.tar.gz\n\n\u002F\u002F Try\nk9s\n\u002F\u002F Ctrl+C to Exit",[],{"_key":1097,"_type":8,"children":1098,"markDefs":1103,"style":33},"62834cef0c77",[1099],{"_key":1100,"_type":12,"marks":1101,"text":1102},"61d2aa5785f8",[],"Troubleshooting",[],{"_key":1105,"_type":8,"children":1106,"markDefs":1111,"style":33},"ed1cfb60709b",[1107],{"_key":1108,"_type":12,"marks":1109,"text":1110},"b5315882d6d1",[],"\u002F\u002F Get Environment Info (Config and Log files location)\nk9s info",[],{"_key":1113,"_type":8,"children":1114,"markDefs":1127,"style":33},"53cb76ca2a03",[1115,1119,1123],{"_key":1116,"_type":12,"marks":1117,"text":1118},"ef999e502e2a",[],"Error “",{"_key":1120,"_type":12,"marks":1121,"text":1122},"0127a206d128",[977],"ERR refine failed error=”Invalid kubeconfig context detected",{"_key":1124,"_type":12,"marks":1125,"text":1126},"d6403793dce8",[],"” indicate that the KUBECONFIG variable was not found.",[],{"_key":1129,"_type":8,"children":1130,"markDefs":1135,"style":701},"a8de8e63b753",[1131],{"_key":1132,"_type":12,"marks":1133,"text":1134},"9bb2cf131859",[],"CoreDNS Crashloop",[],{"_key":1137,"_type":8,"children":1138,"markDefs":1143,"style":33},"2fc0a88e8898",[1139],{"_key":1140,"_type":12,"marks":1141,"text":1142},"5238a153c142",[],"CoreDNS Add-on of MicroK8S get confused because Ubuntu use systemd-resolved instead of resolvconf as DNS. To resolve this we need to alter the resolv.conf symlink.",[],{"_key":1145,"_type":8,"children":1146,"markDefs":1151,"style":33},"75b0008311e2",[1147],{"_key":1148,"_type":12,"marks":1149,"text":1150},"8510b6a49d72",[],"sudo mv resolv.conf resolv.conf.originallink\n\nsudo ln -s \u002Frun\u002Fsystemd\u002Fresolve\u002Fresolv.conf resolv.conf \n\ncat \u002Fetc\u002Fresolv.conf\n\nsudo microk8s kubectl rollout restart -n kube-system deployment\u002Fcoredns\n\nkubectl logs coredns-6f5f9b5d74-2tq95 -n kube-system",[],{"_key":1153,"_type":8,"children":1154,"markDefs":1159,"style":701},"92ee2f8644a6",[1155],{"_key":1156,"_type":12,"marks":1157,"text":1158},"359572d66653",[],"StorageClass",[],{"_key":1161,"_type":8,"children":1162,"markDefs":1167,"style":33},"7bf3324f7e7d",[1163],{"_key":1164,"_type":12,"marks":1165,"text":1166},"d29f7e78a9f5",[],"StorageClass indicate where Microk8s will store pods storage on our local host, we want to point this on our NVMe Raid.",[],{"_key":1169,"_type":8,"children":1170,"markDefs":1175,"style":33},"e64b6f69b562",[1171],{"_key":1172,"_type":12,"marks":1173,"text":1174},"ec611fddba63",[],"This is not required for additional kube node to a cluster.",[],{"_key":1177,"_type":8,"children":1178,"markDefs":1183,"style":33},"f6c3344903e7",[1179],{"_key":1180,"_type":12,"marks":1181,"text":1182},"d833b724c3db",[],"Prepare StorageClass object for NVMe Raid",[],{"_key":1185,"_type":8,"children":1186,"markDefs":1191,"style":33},"3c10134b49d4",[1187],{"_key":1188,"_type":12,"marks":1189,"text":1190},"6003ba2f5943",[],"cd\nmkdir mk8sconfig\nnano mk8sconfig\u002Fnvme-hostpath-sc.yaml",[],{"_key":1193,"_type":8,"children":1194,"markDefs":1199,"style":33},"32d3ef7aa227",[1195],{"_key":1196,"_type":12,"marks":1197,"text":1198},"bc4916e787d3",[],"Copy the Following yaml Content:",[],{"_key":1201,"_type":8,"children":1202,"markDefs":1207,"style":33},"994079963ecb",[1203],{"_key":1204,"_type":12,"marks":1205,"text":1206},"e5e1d612d6b3",[],"# nvme-hostpath-sc.yaml\nkind: StorageClass\napiVersion: storage.k8s.io\u002Fv1\nmetadata:\n  name: nvme-hostpath\nprovisioner: microk8s.io\u002Fhostpath\nreclaimPolicy: Delete\nparameters:\n  pvDir: \u002Fdata\nvolumeBindingMode: WaitForFirstConsumer",[],{"_key":1209,"_type":8,"children":1210,"markDefs":1215,"style":33},"c0a7c1927477",[1211],{"_key":1212,"_type":12,"marks":1213,"text":1214},"7ffa1a0c1427",[],"Create StorageClass:",[],{"_key":1217,"_type":8,"children":1218,"markDefs":1223,"style":33},"b96e63b8b887",[1219],{"_key":1220,"_type":12,"marks":1221,"text":1222},"7b98d2861ec4",[],"\u002F\u002F Create StorageClass from yaml file\nkubectl apply -f mk8sconfig\u002Fnvme-hostpath-sc.yaml\n\n\u002F\u002F Confirm creation of new StorageClass\nkubectl get storageclass",[],{"_key":1225,"_type":8,"children":1226,"markDefs":1231,"style":33},"f234560d5f8f",[1227],{"_key":1228,"_type":12,"marks":1229,"text":1230},"e4a567137dbe",[],"Set Default StorageClass",[],{"_key":1233,"_type":8,"children":1234,"markDefs":1239,"style":33},"4dba8429bbfd",[1235],{"_key":1236,"_type":12,"marks":1237,"text":1238},"1371b2b419c9",[],"\u002F\u002F Display StorageClass\nkubectl get storageclass\n\n\u002F\u002F Set Default\nkubectl patch storageclass microk8s-hostpath -p '{\"metadata\": {\"annotations\":{\"storageclass.kubernetes.io\u002Fis-default-class\":\"false\"}}}'\n\nkubectl patch storageclass nvme-hostpath -p '{\"metadata\": {\"annotations\":{\"storageclass.kubernetes.io\u002Fis-default-class\":\"true\"}}}'\n\n\u002F\u002F Confirm the new Default\nkubectl get storageclass",[],{"_key":1241,"_type":8,"children":1242,"markDefs":1251,"style":33},"93406121173f",[1243,1247],{"_key":1244,"_type":12,"marks":1245,"text":1246},"b2e2156b29ca",[820],"Note",{"_key":1248,"_type":12,"marks":1249,"text":1250},"6f6552d08cf5",[],": If using a multi-node kube cluster, the same storageClass will be used for each node in the cluster, they will all refer to the same path (\u002Fdata) which will be interpreted locally (each their own \u002Fdata folder) on whenever server a new pod is created, is it important that each server of the cluster uses the same path for their data folder.",[],{"_key":1253,"_type":8,"children":1254,"markDefs":1259,"style":701},"63de834cc95e",[1255],{"_key":1256,"_type":12,"marks":1257,"text":1258},"ea7bb0ee0b16",[],"Create THORNode Shared Chains Daemons",[],{"_key":1261,"_type":8,"children":1262,"markDefs":1267,"style":33},"3baef8da9854",[1263],{"_key":1264,"_type":12,"marks":1265,"text":1266},"4724f7668614",[],"The intention of this setup is to be able to run multiple validator nodes on a bare-metal server. To save on resources, we want to be running only one instance of some chain daemons and share it with every node, instead of every node running it own instance of every chain daemons. There is no advantage to run 4 copy of the ETH chain on our server.",[],{"_key":1269,"_type":8,"children":1270,"markDefs":1284,"style":33},"b26f1b16984f",[1271,1275,1280],{"_key":1272,"_type":12,"marks":1273,"text":1274},"aebbbd9ea76e",[],"This approach is based on the ",{"_key":1276,"_type":12,"marks":1277,"text":1279},"f35d43a2c315",[1278],"94614d0324","Multi-Validator-Cluster document",{"_key":1281,"_type":12,"marks":1282,"text":1283},"012517654008",[]," published by 9R.",[1285],{"_key":1278,"_type":26,"link":1286},{"anchor":28,"getParameters":28,"isInternal":190,"openInNewTab":28,"title":28,"url":1287},"https:\u002F\u002Fgitlab.com\u002Fthorchain\u002Fdevops\u002Fnode-launcher\u002F-\u002Fblob\u002Fmaster\u002Fdocs\u002FMulti-Validator-Cluster.md?ref=blog.thorchain.org",{"_key":1289,"_type":8,"children":1290,"markDefs":1295,"style":33},"34f7fff01138",[1291],{"_key":1292,"_type":12,"marks":1293,"text":1294},"0ef7f5275609",[],"For this setup, I chose to share a single daemon instance of all non-UXTO chains with every node, while having individual daemon instances for all UXTO chains. From my other members experience, UXTO chains are less friendly to share between multiple node and may be a cause of slash because they require confirmations.",[],{"_key":1297,"_type":8,"children":1298,"markDefs":1303,"style":33},"638264ccf840",[1299],{"_key":1300,"_type":12,"marks":1301,"text":1302},"fd1e5608878a",[],"While I have not tried myself to share UXTO between multiple nodes, I can confirm that this half-and-half setup is working very well. Let me know if you explored other combinations.",[],{"_key":1305,"_type":8,"children":1306,"markDefs":1315,"style":33},"e1bbdbe76521",[1307,1311],{"_key":1308,"_type":12,"marks":1309,"text":1310},"432cd8d94e55",[820],"Edit:",{"_key":1312,"_type":12,"marks":1313,"text":1314},"251f3ab8fe73",[]," Since the UXTO Client V2, we can now share UXTO Chain with multiple nodes, but they may require some additional memory.",[],{"_key":1317,"_type":8,"children":1318,"markDefs":1323,"style":33},"39039ae35b8e",[1319],{"_key":1320,"_type":12,"marks":1321,"text":1322},"8445bc89336b",[],"Install THORChain Node Pre-requirements:",[],{"_key":1325,"_type":8,"children":1326,"markDefs":1331,"style":33},"87dde2174672",[1327],{"_key":1328,"_type":12,"marks":1329,"text":1330},"7861df186439",[],"sudo apt-get install make wget jq -y",[],{"_key":1333,"_type":8,"children":1334,"markDefs":1339,"style":33},"64ac206c6ef8",[1335],{"_key":1336,"_type":12,"marks":1337,"text":1338},"ed2a736489f8",[],"Prepare git folder:",[],{"_key":1341,"_type":8,"children":1342,"markDefs":1347,"style":33},"506dd52b0d4e",[1343],{"_key":1344,"_type":12,"marks":1345,"text":1346},"f079e272020f",[],"cd ~\nmkdir c0\ncd c0\ngit clone https:\u002F\u002Fgitlab.com\u002Fthorchain\u002Fdevops\u002Fnode-launcher.git\ncd node-launcher\ngit checkout master\ngit config pull.rebase true\ngit config rebase.autoStash true",[],{"_key":1349,"_type":8,"children":1350,"markDefs":1355,"style":33},"3ffdb3d8f3fe",[1351],{"_key":1352,"_type":12,"marks":1353,"text":1354},"bfd115844f9a",[],"Install Tools (First Kube Node Only?):",[],{"_key":1357,"_type":8,"children":1358,"markDefs":1363,"style":33},"83e771969ef6",[1359],{"_key":1360,"_type":12,"marks":1361,"text":1362},"8d1b3c391fc7",[],"make helm\nmake helm-plugins\nmake tools",[],{"_key":1365,"_type":8,"children":1366,"markDefs":1371,"style":33},"5b78206b7102",[1367],{"_key":1368,"_type":12,"marks":1369,"text":1370},"8be9b8d61a77",[],"Verify all pods are healthy:",[],{"_key":1373,"_type":8,"children":1374,"markDefs":1379,"style":33},"2783ceef95a7",[1375],{"_key":1376,"_type":12,"marks":1377,"text":1378},"f805bde902fa",[],"k9s\n\u002F\u002F or\nkubectl get pods -A",[],{"_key":1381,"_type":8,"children":1382,"markDefs":1387,"style":33},"52c0b1f98f50",[1383],{"_key":1384,"_type":12,"marks":1385,"text":1386},"8949db1e7e8e",[],"Change Chaosnet Config to Install only Non-UXTO Chains",[],{"_key":1389,"_type":8,"children":1390,"markDefs":1395,"style":33},"e6d805348d0e",[1391],{"_key":1392,"_type":12,"marks":1393,"text":1394},"e40704c90ff4",[],"cd ~\u002Fc0\u002Fnode-launcher\n\n\u002F\u002F Edit Daemons Configs\nnano thornode-stack\u002Fmainnet.yaml",[],{"_key":1397,"_type":8,"children":1398,"markDefs":1403,"style":33},"f6fc318e009d",[1399],{"_key":1400,"_type":12,"marks":1401,"text":1402},"4cb9892cd5c3",[],"Disable all UXTO Chains by setting the enabled value to false. We will want to run them locally to each node later.",[],{"_key":1405,"_type":8,"children":1406,"markDefs":1411,"style":33},"1fc477792382",[1407],{"_key":1408,"_type":12,"marks":1409,"text":1410},"b70f92eb0f76",[],"binance-daemon:\n  enabled: true\nbitcoin-daemon:\n  enabled: false\nlitecoin-daemon:\n  enabled: false\nbitcoin-cash-daemon:\n  enabled: false\nethereum-daemon:\n  enabled: true\ndogecoin-daemon:\n  enabled: false\ngaia-daemon:\n  enabled: true\navalanche-daemon:\n  enabled: true\nbinance-smart-daemon:\n  enabled: false",[],{"_key":1413,"_type":8,"children":1414,"markDefs":1419,"style":33},"1610f01c9f23",[1415],{"_key":1416,"_type":12,"marks":1417,"text":1418},"fef327161f4c",[],"Run Make Install to Create Daemons",[],{"_key":1421,"_type":8,"children":1422,"markDefs":1427,"style":33},"f80a14994141",[1423],{"_key":1424,"_type":12,"marks":1425,"text":1426},"66df74fc5b2c",[],"NAME=c0 TYPE=daemons NET=mainnet make install\n\n\u002F\u002F Confirm\nk9s\n\u002F\u002F or\n\nkubectl get pods -A",[],{"_key":1429,"_type":8,"children":1430,"markDefs":1435,"style":701},"dc81e23c1603",[1431],{"_key":1432,"_type":12,"marks":1433,"text":1434},"4e6f21d0ffba",[],"Second Instance of Ethereum-Daemon (Optional)",[],{"_key":1437,"_type":8,"children":1438,"markDefs":1443,"style":33},"e88b3ebae8fc",[1439],{"_key":1440,"_type":12,"marks":1441,"text":1442},"ff19bb92d607",[],"Given that ETH is very long to sync (almost two weeks, at time of writing this), it may be worth to have a second ETH daemon that is ready in the background. If our first ETH Daemon ever get corrupted, we could just tell all our validators to point to the second ETH instance.",[],{"_key":1445,"_type":8,"children":1446,"markDefs":1451,"style":33},"6a304af7bdb0",[1447],{"_key":1448,"_type":12,"marks":1449,"text":1450},"99f5fad7dec1",[],"To do so, we can repeat the previous section using a different namespace (c1 for example), and only enable the ethereum-daemon.",[],{"_key":1453,"_type":8,"children":1454,"markDefs":1459,"style":33},"6619c7539c01",[1455],{"_key":1456,"_type":12,"marks":1457,"text":1458},"dc1066a7eab8",[],"ethereum-daemon:\n  enabled: true",[],{"_key":1461,"_type":8,"children":1462,"markDefs":1467,"style":701},"068b1d2f68e1",[1463],{"_key":1464,"_type":12,"marks":1465,"text":1466},"42e6399bea68",[],"Shared Daemon with other bare-metal via Kube Cluster",[],{"_key":1469,"_type":8,"children":1470,"markDefs":1475,"style":33},"dcc102fe4c66",[1471],{"_key":1472,"_type":12,"marks":1473,"text":1474},"75a3d6110bc3",[],"When two bare-metal are linked via a Kubernetes Cluster, pods from both server can see each other and can be reached via their Kube FQDA similar to:",[],{"_key":1477,"_type":8,"children":1478,"markDefs":1483,"style":33},"40f45a2f275b",[1479],{"_key":1480,"_type":12,"marks":1481,"text":1482},"d8d2c5d4ca59",[],"ethereumDaemon:\n     mainnet: http:\u002F\u002Fethereum-daemon.c0.svc.cluster.local:8545",[],{"_key":1485,"_type":8,"children":1486,"markDefs":1491,"style":33},"48aac0ba2a50",[1487],{"_key":1488,"_type":12,"marks":1489,"text":1490},"d8be22baf840",[],"The c0 represent the namespace the daemon is running in.",[],{"_key":1493,"_type":8,"children":1494,"markDefs":1499,"style":33},"4d7dbc0bcb46",[1495],{"_key":1496,"_type":12,"marks":1497,"text":1498},"f3c32bf5f691",[],"If planning to run a multi-node kube cluster, each bare-metal server could have their own set of shared chain-daemons that can be used locally, and be the backup of each other in case of corruption.",[],{"_key":1501,"_type":8,"children":1502,"markDefs":1507,"style":33},"fca1756d74b9",[1503],{"_key":1504,"_type":12,"marks":1505,"text":1506},"476cad3be043",[],"Note that running a Kubernetes Cluster add complexity to the setup and may turn out into unexpected behavious, such as pods trying to start on the wrong kube node, etc.",[],{"_key":1509,"_type":8,"children":1510,"markDefs":1515,"style":701},"962dce5e17de",[1511],{"_key":1512,"_type":12,"marks":1513,"text":1514},"b3e22d1e3544",[],"Shared Daemon with other bare-metal via Network (Optional)",[],{"_key":1517,"_type":8,"children":1518,"markDefs":1523,"style":33},"2bbd611b403c",[1519],{"_key":1520,"_type":12,"marks":1521,"text":1522},"105e8da749e1",[],"A simple way to share daemon with another bare-metal is simply to set an External-IP in the daemon kube service.",[],{"_key":1525,"_type":8,"children":1526,"markDefs":1531,"style":33},"027d30209ed0",[1527],{"_key":1528,"_type":12,"marks":1529,"text":1530},"7d182cb76635",[],"In the following example, we want to expose our ethereum-daemon of namespace c0, to be reachable via the LAN IP. This would allos the Eth RPC to be reachable by any computer on the Local Area Network.",[],{"_key":1533,"_type":8,"children":1534,"markDefs":1539,"style":33},"21cbfef693f5",[1535],{"_key":1536,"_type":12,"marks":1537,"text":1538},"f81692b0a9c5",[],"kubectl patch svc ethereum-daemon -n c0 -p  '{\"spec\":{\"externalIPs\":[\"192.168.1.50\"]}}'",[],{"_key":1541,"_type":8,"children":1542,"markDefs":1547,"style":33},"7c5f8caa200f",[1543],{"_key":1544,"_type":12,"marks":1545,"text":1546},"448d9d4c1b37",[],"List services to confirm",[],{"_key":1549,"_type":8,"children":1550,"markDefs":1555,"style":33},"2910a02ce372",[1551],{"_key":1552,"_type":12,"marks":1553,"text":1554},"a7abf5188c29",[],"kubectl get services -n c0",[],{"_key":1557,"_type":8,"children":1558,"markDefs":1563,"style":33},"917445289d1d",[1559],{"_key":1560,"_type":12,"marks":1561,"text":1562},"820c29c7342e",[],"The daemon can then be access by TC Node running on other bare-metal server via the following config:",[],{"_key":1565,"_type":8,"children":1566,"markDefs":1571,"style":33},"ddd41c1dbb2c",[1567],{"_key":1568,"_type":12,"marks":1569,"text":1570},"67c136c78520",[],"ethereumDaemon:\n      mainnet: http:\u002F\u002F192.168.1.50:8545",[],{"_key":1573,"_type":8,"children":1574,"markDefs":1579,"style":33},"d0d4e1a4ab1b",[1575],{"_key":1576,"_type":12,"marks":1577,"text":1578},"c7aef103e298",[],"We can repeat the same with other services as desired, as long as they are exposing unique port number.",[],{"_key":1581,"_type":8,"children":1582,"markDefs":1587,"style":33},"5a2254a4b67f",[1583],{"_key":1584,"_type":12,"marks":1585,"text":1586},"5f094ede511b",[],"There is many other way to expose ports externally, this was the easiest.",[],{"_key":1589,"_type":8,"children":1590,"markDefs":1595,"style":701},"055c6e49390b",[1591],{"_key":1592,"_type":12,"marks":1593,"text":1594},"71f90c07bbb6",[],"Setup WireGuard Proxy Server (one for each validator)",[],{"_key":1597,"_type":8,"children":1598,"markDefs":1603,"style":33},"5100bb2406fe",[1599],{"_key":1600,"_type":12,"marks":1601,"text":1602},"38c65c916d7b",[],"We can use pretty much any inexpensive cloud vm to host a WireGuard Proxy (cloud, shared-hosting, bare-metal, etc), as long as it has a static IP, and a fast network connection, it does not require high resources specs (1 CPU with 500 MB of RAM, and 10 GB Storage is enough). One could also consider it to be located in a country less prone to interventions.",[],{"_key":1605,"_type":8,"children":1606,"markDefs":1619,"style":33},"b6e16fdeade8",[1607,1611,1616],{"_key":1608,"_type":12,"marks":1609,"text":1610},"34d5c9124ce7",[],"In this guide we are using Ubuntu LTS as an OS for the WireGuard Proxy, similar to ",{"_key":1612,"_type":12,"marks":1613,"text":1615},"d9f61b397f60",[1614],"2943fe5655","this guide",{"_key":1617,"_type":12,"marks":1618,"text":641},"87b2415561bf",[],[1620],{"_key":1614,"_type":26,"link":1621},{"anchor":28,"getParameters":28,"isInternal":190,"openInNewTab":28,"title":28,"url":1622},"https:\u002F\u002Fwww.digitalocean.com\u002Fcommunity\u002Ftutorials\u002Fhow-to-set-up-wireguard-on-ubuntu-20-04?ref=blog.thorchain.org",{"_key":1624,"_type":8,"children":1625,"markDefs":1630,"style":33},"7b275b999637",[1626],{"_key":1627,"_type":12,"marks":1628,"text":1629},"6298841575b0",[],"Update the OS:",[],{"_key":1632,"_type":8,"children":1633,"markDefs":1638,"style":33},"47f3bc7152df",[1634],{"_key":1635,"_type":12,"marks":1636,"text":1637},"a8c893dde9eb",[],"sudo apt update\nsudo apt upgrade -y",[],{"_key":1640,"_type":8,"children":1641,"markDefs":1646,"style":33},"d46b93effef4",[1642],{"_key":1643,"_type":12,"marks":1644,"text":1645},"f16c4c887a4a",[],"If prompted for merging, select first option, “install the package maintainer’s version”.",[],{"_key":1648,"_type":8,"children":1649,"markDefs":1654,"style":33},"350640b60551",[1650],{"_key":1651,"_type":12,"marks":1652,"text":1653},"4b3fb104176c",[],"Install Networking and Monitoring Tools (Optional)",[],{"_key":1656,"_type":8,"children":1657,"markDefs":1662,"style":33},"f1862fe16624",[1658],{"_key":1659,"_type":12,"marks":1660,"text":1661},"4c22213a01df",[],"sudo apt install glances nmap net-tools iperf3 tshark speedtest-cli traceroute -y",[],{"_key":1664,"_type":8,"children":1665,"markDefs":1670,"style":33},"2cd327b6106d",[1666],{"_key":1667,"_type":12,"marks":1668,"text":1669},"72884d79cbaa",[],"Install WireGuard",[],{"_key":1672,"_type":8,"children":1673,"markDefs":1678,"style":33},"ad316ea9a13f",[1674],{"_key":1675,"_type":12,"marks":1676,"text":1677},"9b48c813b20e",[],"sudo apt install wireguard -y",[],{"_key":1680,"_type":8,"children":1681,"markDefs":1686,"style":33},"2253fbeec125",[1682],{"_key":1683,"_type":12,"marks":1684,"text":1685},"db7a9b51fd22",[],"Restart to reload services and new kernel if required.",[],{"_key":1688,"_type":8,"children":1689,"markDefs":1694,"style":33},"d681e987d8d3",[1690],{"_key":1691,"_type":12,"marks":1692,"text":1693},"dfcb96f37270",[],"sudo reboot",[],{"_key":1696,"_type":8,"children":1697,"markDefs":1702,"style":33},"afca1d96ab0b",[1698],{"_key":1699,"_type":12,"marks":1700,"text":1701},"035f3c2d9a5b",[],"Generate WireGuard Private and Public KeyPairs",[],{"_key":1704,"_type":8,"children":1705,"markDefs":1710,"style":33},"4766ae62d993",[1706],{"_key":1707,"_type":12,"marks":1708,"text":1709},"c21e0ff2bc0d",[],"\u002F\u002F Generate KeyPair for WireGuard Server (The Proxy itself)\nwg genkey | sudo tee \u002Fetc\u002Fwireguard\u002Fwg1server.key\nsudo chmod go= \u002Fetc\u002Fwireguard\u002Fwg1server.key\nsudo cat \u002Fetc\u002Fwireguard\u002Fwg1server.key | wg pubkey | sudo tee \u002Fetc\u002Fwireguard\u002Fwg1server.pub\n\n\u002F\u002F Generate KeyPair for THORChain Node (Acting as WireGuard Client)\nwg genkey | sudo tee \u002Fetc\u002Fwireguard\u002Fwg1node.key\nsudo chmod go= \u002Fetc\u002Fwireguard\u002Fwg1node.key\nsudo cat \u002Fetc\u002Fwireguard\u002Fwg1node.key | wg pubkey | sudo tee \u002Fetc\u002Fwireguard\u002Fwg1node.pub\n\n\u002F\u002F Generate KeyPair for Additional Client sur as Laptop or Cellphone.\nwg genkey | sudo tee \u002Fetc\u002Fwireguard\u002Fwg1client.key\nsudo chmod go= \u002Fetc\u002Fwireguard\u002Fwg1client.key\nsudo cat \u002Fetc\u002Fwireguard\u002Fwg1client.key | wg pubkey | sudo tee \u002Fetc\u002Fwireguard\u002Fwg1client.pub",[],{"_key":1712,"_type":8,"children":1713,"markDefs":1718,"style":33},"64f6b9bff6a0",[1714],{"_key":1715,"_type":12,"marks":1716,"text":1717},"73e052822f37",[],"Create Config File for Server",[],{"_key":1720,"_type":8,"children":1721,"markDefs":1726,"style":33},"92eaeb49efe8",[1722],{"_key":1723,"_type":12,"marks":1724,"text":1725},"92611e1a48c7",[],"nano \u002Fetc\u002Fwireguard\u002Fwg1.conf",[],{"_key":1728,"_type":8,"children":1729,"markDefs":1734,"style":33},"468cca6f11a2",[1730],{"_key":1731,"_type":12,"marks":1732,"text":1733},"aa900d9e3a0a",[],"Copy the following Content:",[],{"_key":1736,"_type":8,"children":1737,"markDefs":1742,"style":33},"5cc78c876df1",[1738],{"_key":1739,"_type":12,"marks":1740,"text":1741},"2e0d5598a992",[],"[Interface]\nAddress = 10.10.1.100\u002F24\nPrivateKey = \u003Cwg1server.key>\nListenPort = 51820 \u002F\u002F Can change that default \nSaveConfig = false\n\nPostUp = ufw route allow in on wg1 out on eth0\nPostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE\n\nPreUp = iptables -A FORWARD -i eth0 -o wg1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT\nPreUp = iptables -A FORWARD -i wg1 -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT\nPreUp = iptables -A FORWARD -i eth0 -o wg1 -p tcp --syn --match multiport --dports 6040,5040,27146,27147 -m conntrack --ctstate NEW -j ACCEPT\nPreUp = iptables -t nat -A PREROUTING -i eth0 -p tcp --match multiport --dports 6040,5040,27146,27147 -j DNAT --to-destination 10.10.1.101\nPreUp = iptables -t nat -A POSTROUTING -o wg1 -p tcp --match multiport --dports 6040,5040,27146,27147 -d 10.10.1.101 -j SNAT --to-source 10.10.1.100\n\nPreDown = ufw route delete allow in on wg1 out on eth0\nPreDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE\n\nPostDown = iptables -D FORWARD -i eth0 -o wg1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT\nPostDown = iptables -D FORWARD -i wg1 -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT\nPostDown = iptables -D FORWARD -i eth0 -o wg1 -p tcp --syn --match multiport --dports 6040,5040,27146,27147 -m conntrack --ctstate NEW -j ACCEPT\nPostDown = iptables -t nat -D PREROUTING -i eth0 -p tcp --match multiport --dports 6040,5040,27146,27147 -j DNAT --to-destination 10.10.1.101\nPostDown = iptables -t nat -D POSTROUTING -o wg1 -p tcp --match multiport --dports 6040,5040,27146,27147 -d 10.10.1.101 -j SNAT --to-source 10.10.1.100\n\n# Node\n[Peer]\nPublicKey = \u003Cwg1node.pub>\nAllowedIPs = 10.10.1.101\u002F32\n\n# Laptop\n[Peer]\nPublicKey = \u003Cwg1client.pub>\nAllowedIPs = 10.10.1.102\u002F32",[],{"_key":1744,"_type":8,"children":1745,"markDefs":1750,"style":33},"97cddd633fa2",[1746],{"_key":1747,"_type":12,"marks":1748,"text":1749},"d866d2dfff8c",[],"Enable IP Foward",[],{"_key":1752,"_type":8,"children":1753,"markDefs":1758,"style":33},"80c041719393",[1754],{"_key":1755,"_type":12,"marks":1756,"text":1757},"6ea64a354800",[],"\u002F\u002F Add the following config at the end of sysctl.conf:\nsudo echo 'net.ipv4.ip_forward=1' >> \u002Fetc\u002Fsysctl.conf\n\n\u002F\u002F Apply Changes\nsudo sysctl -p",[],{"_key":1760,"_type":8,"children":1761,"markDefs":1766,"style":33},"8f670d7def7e",[1762],{"_key":1763,"_type":12,"marks":1764,"text":1765},"b0b3753d459e",[],"Run WireGuard Manually (Optional)",[],{"_key":1768,"_type":8,"children":1769,"markDefs":1774,"style":33},"629c880b92db",[1770],{"_key":1771,"_type":12,"marks":1772,"text":1773},"b61661b6ed28",[],"sudo wg-quick up wg1\nsudo wg-quick down wg1",[],{"_key":1776,"_type":8,"children":1777,"markDefs":1782,"style":33},"1092cdbae4b9",[1778],{"_key":1779,"_type":12,"marks":1780,"text":1781},"49667d6e047f",[],"Set WireGuard as Service",[],{"_key":1784,"_type":8,"children":1785,"markDefs":1790,"style":33},"fdcdfa0a7155",[1786],{"_key":1787,"_type":12,"marks":1788,"text":1789},"658c8f11e0a5",[],"sudo systemctl enable wg-quick@wg1.service\nsudo systemctl start wg-quick@wg1.service\nsudo systemctl status wg-quick@wg1.service",[],{"_key":1792,"_type":8,"children":1793,"markDefs":1798,"style":33},"05b6405faa06",[1794],{"_key":1795,"_type":12,"marks":1796,"text":1797},"dd7acb56591c",[],"Watch for Connection (Troubleshooting)",[],{"_key":1800,"_type":8,"children":1801,"markDefs":1806,"style":33},"8ef642e220b9",[1802],{"_key":1803,"_type":12,"marks":1804,"text":1805},"f7ec060243e0",[],"wg show\nwatch wg",[],{"_key":1808,"_type":8,"children":1809,"markDefs":1814,"style":33},"26f50eb74b79",[1810],{"_key":1811,"_type":12,"marks":1812,"text":1813},"c1c062c98803",[],"Look for peer latest handshake",[],{"_key":1816,"_type":8,"children":1817,"markDefs":1822,"style":33},"357fa7806600",[1818],{"_key":1819,"_type":12,"marks":1820,"text":1821},"5cc30ddafecb",[],"Firewall Configuration",[],{"_key":1824,"_type":8,"children":1825,"markDefs":1830,"style":33},"fc513562bcd2",[1826],{"_key":1827,"_type":12,"marks":1828,"text":1829},"a166d4b8fd81",[],"sudo ufw reset\n\nsudo ufw default allow incoming\nsudo ufw default allow outgoing\nsudo ufw allow in on eth0 to any port 22\nsudo ufw allow in on eth0 to any port 5040\nsudo ufw allow in on eth0 to any port 6040\nsudo ufw allow in on eth0 to any port 27146\nsudo ufw allow in on eth0 to any port 27147\nsudo ufw allow in on eth0 to any port 51820\nsudo ufw deny in on eth0\n\nsudo ufw enable\nsudo ufw status numbered",[],{"_key":1832,"_type":8,"children":1833,"markDefs":1838,"style":33},"105fac39b722",[1834],{"_key":1835,"_type":12,"marks":1836,"text":1837},"ebe4058c6ed8",[],"Try connecting another SSH Session before closing the current one to confirm that the server can still be connected to.",[],{"_key":1840,"_type":8,"children":1841,"markDefs":1846,"style":33},"45bc18aff89c",[1842],{"_key":1843,"_type":12,"marks":1844,"text":1845},"bf7e52a31fa9",[],"Test Ports (from a different computer)",[],{"_key":1848,"_type":8,"children":1849,"markDefs":1854,"style":33},"73c6688a6dfa",[1850],{"_key":1851,"_type":12,"marks":1852,"text":1853},"51f4c6427e3d",[],"nmap -Pn -p 22,23,25,80,1317,8080,5040,6040,26656,26657,27146,27147,51820 \u003CProxyPublicIP>",[],{"_key":1856,"_type":8,"children":1857,"markDefs":1862,"style":33},"9d545b6a6573",[1858],{"_key":1859,"_type":12,"marks":1860,"text":1861},"a93a5bf32f0a",[],"After everything is configured the following ports should be Open: 22, 5040, 6040, 27146, 27147, 51820, everything else would be Filtered.",[],{"_key":1864,"_type":8,"children":1865,"markDefs":1870,"style":33},"cbba6d72b6b2",[1866],{"_key":1867,"_type":12,"marks":1868,"text":1869},"b523ad31c229",[],"Repeat this part to create a WireGuard Proxy for each Validator Node. I created them as wg1 wg2 wg3, with IP range 10.10.1.x, 10.10.2.x, 10.10.3.x.",[],{"_key":1872,"_type":8,"children":1873,"markDefs":1878,"style":701},"b9cb03c8e32a",[1874],{"_key":1875,"_type":12,"marks":1876,"text":1877},"e9d7c4e0e4b4",[],"Setup WireGuard Proxy Client (one for each node)",[],{"_key":1880,"_type":8,"children":1881,"markDefs":1886,"style":33},"cc7e22ed81e9",[1882],{"_key":1883,"_type":12,"marks":1884,"text":1885},"acc945dd6d70",[],"Back on the Bare-Metal Server, we will configure WireGuard at that end to connect to the Proxy we just created.",[],{"_key":1888,"_type":8,"children":1889,"markDefs":1894,"style":33},"15501f38aa72",[1890],{"_key":1891,"_type":12,"marks":1892,"text":1893},"5205ee77419c",[],"Install WireGuard (one time)",[],{"_key":1896,"_type":8,"children":1897,"markDefs":1901,"style":33},"bc0dc0f6eb50",[1898],{"_key":1899,"_type":12,"marks":1900,"text":1677},"39a67701b2cc",[],[],{"_key":1903,"_type":8,"children":1904,"markDefs":1909,"style":33},"5d2d484efea9",[1905],{"_key":1906,"_type":12,"marks":1907,"text":1908},"32c4237fc6d5",[],"Install Dependency (one time)",[],{"_key":1911,"_type":8,"children":1912,"markDefs":1917,"style":33},"87f6f278c3c9",[1913],{"_key":1914,"_type":12,"marks":1915,"text":1916},"7ce30c7db6cb",[],"sudo apt install openresolv -y",[],{"_key":1919,"_type":8,"children":1920,"markDefs":1925,"style":33},"41b36324835e",[1921],{"_key":1922,"_type":12,"marks":1923,"text":1924},"4966fca18a6b",[],"Create Config files for Server",[],{"_key":1927,"_type":8,"children":1928,"markDefs":1933,"style":33},"0e6e72326e6b",[1929],{"_key":1930,"_type":12,"marks":1931,"text":1932},"1de2802a7dfa",[],"sudo nano \u002Fetc\u002Fwireguard\u002Fwg1.conf",[],{"_key":1935,"_type":8,"children":1936,"markDefs":1940,"style":33},"ecf630ccf933",[1937],{"_key":1938,"_type":12,"marks":1939,"text":1733},"d2dc482384db",[],[],{"_key":1942,"_type":8,"children":1943,"markDefs":1948,"style":33},"3a618ac5a8e9",[1944],{"_key":1945,"_type":12,"marks":1946,"text":1947},"770f96cc94da",[],"[Interface]\nAddress = 10.10.1.101\u002F32\nPrivateKey = \u003Cwg1node.key>\nDNS = 9.9.9.9\nSaveConfig = false\n\n[Peer]\nPublicKey = \u003Cwg1server.pub>\nEndPoint = \u003CProxy Server Public IP>:51820\nAllowedIPs = 10.10.1.0\u002F24\nPersistentKeepalive = 25",[],{"_key":1950,"_type":8,"children":1951,"markDefs":1955,"style":33},"0795aee8e649",[1952],{"_key":1953,"_type":12,"marks":1954,"text":1765},"60de2faff084",[],[],{"_key":1957,"_type":8,"children":1958,"markDefs":1962,"style":33},"73aeb245d9e4",[1959],{"_key":1960,"_type":12,"marks":1961,"text":1773},"0f670485e3e5",[],[],{"_key":1964,"_type":8,"children":1965,"markDefs":1969,"style":33},"3954d0ec09a0",[1966],{"_key":1967,"_type":12,"marks":1968,"text":1781},"68b7673e1fbf",[],[],{"_key":1971,"_type":8,"children":1972,"markDefs":1976,"style":33},"83c853758686",[1973],{"_key":1974,"_type":12,"marks":1975,"text":1789},"51933fc57d7d",[],[],{"_key":1978,"_type":8,"children":1979,"markDefs":1984,"style":33},"1d6da2e0083e",[1980],{"_key":1981,"_type":12,"marks":1982,"text":1983},"bc4345eaf814",[],"Ping Test",[],{"_key":1986,"_type":8,"children":1987,"markDefs":1992,"style":33},"953de6d5b515",[1988],{"_key":1989,"_type":12,"marks":1990,"text":1991},"3f7c02026b18",[],"ping 10.10.1.100",[],{"_key":1994,"_type":8,"children":1995,"markDefs":1999,"style":33},"c549e4bbadbd",[1996],{"_key":1997,"_type":12,"marks":1998,"text":1797},"bac8cf30155b",[],[],{"_key":2001,"_type":8,"children":2002,"markDefs":2006,"style":33},"39120411b0c7",[2003],{"_key":2004,"_type":12,"marks":2005,"text":1805},"f2aad1b1b682",[],[],{"_key":2008,"_type":8,"children":2009,"markDefs":2014,"style":33},"a7fa7e836c24",[2010],{"_key":2011,"_type":12,"marks":2012,"text":2013},"f2ba6a758d9f",[],"Setup WireGuard IP in MetalLB",[],{"_key":2016,"_type":8,"children":2017,"markDefs":2022,"style":33},"886b3c8ffd3e",[2018],{"_key":2019,"_type":12,"marks":2020,"text":2021},"ba8f054358bf",[],"kubectl edit ipaddresspool default-addresspool --namespace=metallb-system",[],{"_key":2024,"_type":8,"children":2025,"markDefs":2030,"style":33},"f06ef4175c4b",[2026],{"_key":2027,"_type":12,"marks":2028,"text":2029},"d3bb0ff1bf81",[],"Add the IP to the IP List.",[],{"_key":2032,"_type":8,"children":2033,"markDefs":2038,"style":33},"211510cfda69",[2034],{"_key":2035,"_type":12,"marks":2036,"text":2037},"227cbcf84134",[],"spec:\n  addresses:\n  - 10.10.1.101\u002F32\n\n(Ctrl-X to Save)",[],{"_key":2040,"_type":8,"children":2041,"markDefs":2046,"style":33},"aa65a28b3b9b",[2042],{"_key":2043,"_type":12,"marks":2044,"text":2045},"a3c28576bedb",[],"Confirm Change",[],{"_key":2048,"_type":8,"children":2049,"markDefs":2054,"style":33},"9fd2bb04caea",[2050],{"_key":2051,"_type":12,"marks":2052,"text":2053},"25b3ed38518d",[],"kubectl describe ipaddresspool default-addresspool --namespace=metallb-system",[],{"_key":2056,"_type":8,"children":2057,"markDefs":2062,"style":33},"c9561f3a9d56",[2058],{"_key":2059,"_type":12,"marks":2060,"text":2061},"ddf5bdef8ec5",[],"Repeat for each VPN Tunnel.",[],{"_key":2064,"_type":8,"children":2065,"markDefs":2070,"style":701},"47acc5193780",[2066],{"_key":2067,"_type":12,"marks":2068,"text":2069},"abd81e237553",[],"Install THORChain Node (one for each validator)",[],{"_key":2072,"_type":8,"children":2073,"markDefs":2078,"style":33},"198d28cc44b1",[2074],{"_key":2075,"_type":12,"marks":2076,"text":2077},"a3bada89ce9f",[],"For this setup we will create a distinct git working folder for each validator node.",[],{"_key":2080,"_type":8,"children":2081,"markDefs":2085,"style":33},"1ce8a4f44730",[2082],{"_key":2083,"_type":12,"marks":2084,"text":1338},"2e71677ce46e",[],[],{"_key":2087,"_type":8,"children":2088,"markDefs":2093,"style":33},"d57b5ef97644",[2089],{"_key":2090,"_type":12,"marks":2091,"text":2092},"96770af8b83b",[],"cd ~\nmkdir n1\ncd n1\ngit clone https:\u002F\u002Fgitlab.com\u002Fthorchain\u002Fdevops\u002Fnode-launcher.git\ncd node-launcher\ngit checkout master\ngit config pull.rebase true\ngit config rebase.autoStash true",[],{"_key":2095,"_type":8,"children":2096,"markDefs":2101,"style":33},"a7ce74b08395",[2097],{"_key":2098,"_type":12,"marks":2099,"text":2100},"017562468140",[],"Change Chaosnet Config to Install only UXTO Chains daemon and point to earlier created Non-UXTO Chains.",[],{"_key":2103,"_type":8,"children":2104,"markDefs":2109,"style":33},"acb6aafa341d",[2105],{"_key":2106,"_type":12,"marks":2107,"text":2108},"c6d7e56e3ab4",[],"cd ~\u002Fn1\u002Fnode-launcher\n\n\u002F\u002F Edit Daemons Configs\nnano thornode-stack\u002Fchaosnet.yaml",[],{"_key":2111,"_type":8,"children":2112,"markDefs":2117,"style":33},"a939040df7d8",[2113],{"_key":2114,"_type":12,"marks":2115,"text":2116},"9bfaee90e608",[],"Add the following values at the end of the file:",[],{"_key":2119,"_type":8,"children":2120,"markDefs":2125,"style":33},"eecfd0499549",[2121],{"_key":2122,"_type":12,"marks":2123,"text":2124},"e7f84e77deff",[],"# point bifrost at shared daemons\nbifrost:\n  binanceDaemon:\n    mainnet: http:\u002F\u002Fbinance-daemon.c0.svc.cluster.local:27147\n# Keep commented out, running the following chain localy \n#  bitcoinDaemon:\n#    mainnet: bitcoin-daemon.daemons.svc.cluster.local:8332\n#  litecoinDaemon:\n#    mainnet: litecoin-daemon.daemons.svc.cluster.local:9332\n#  bitcoinCashDaemon:\n#    mainnet: bitcoin-cash-daemon.daemons.svc.cluster.local:8332\n#  dogecoinDaemon:\n#    mainnet: dogecoin-daemon.daemons.svc.cluster.local:22555\n  ethereumDaemon:\n    # Link Eth RPC from Cluster\n    mainnet: http:\u002F\u002Fethereum-daemon.c0.svc.cluster.local:8545\n    # Link Eth RPC from External Cluster\n  # mainnet: 192.168.1.50:8545\n  gaiaDaemon:\n    enabled: true\n    mainnet:\n      rpc: http:\u002F\u002Fgaia-daemon.c0.svc.cluster.local:26657\n      grpc: gaia-daemon.c0.svc.cluster.local:9090\n      grpcTLS: false\n  avaxDaemon:\n    mainnet: http:\u002F\u002Favalanche-daemon.c0.svc.cluster.local:9650\u002Fext\u002Fbc\u002FC\u002Frpc",[],{"_key":2127,"_type":8,"children":2128,"markDefs":2133,"style":33},"8e45dbebec06",[2129],{"_key":2130,"_type":12,"marks":2131,"text":2132},"3aa72d3c2300",[],"Disable all non-UXTO Chains by setting the enabled value to false. They are shared between all nodes.",[],{"_key":2135,"_type":8,"children":2136,"markDefs":2141,"style":33},"708930af6dfd",[2137],{"_key":2138,"_type":12,"marks":2139,"text":2140},"aa68e7b61719",[],"binance-daemon:\n  enabled: false\nbitcoin-daemon:\n  enabled: true\nlitecoin-daemon:\n  enabled: true\nbitcoin-cash-daemon:\n  enabled: true\nethereum-daemon:\n  enabled: false\ndogecoin-daemon:\n  enabled: true\ngaia-daemon:\n  enabled: false\navalanche-daemon:\n  enabled: false\nbinance-smart-daemon:\n  enabled: false",[],{"_key":2143,"_type":8,"children":2144,"markDefs":2149,"style":33},"cdc5b6aa163f",[2145],{"_key":2146,"_type":12,"marks":2147,"text":2148},"481634d75912",[],"Set loadBalancerIP parameter for Gateway",[],{"_key":2151,"_type":8,"children":2152,"markDefs":2157,"style":33},"d95d17f1b4ac",[2153],{"_key":2154,"_type":12,"marks":2155,"text":2156},"07beeb0c4e3f",[],"This will force MetalLB to assign a specific IP to this validator. We need that so that the node actually receive the same VPN IP than the one we configure internally for it to be reached thought.",[],{"_key":2159,"_type":8,"children":2160,"markDefs":2165,"style":33},"d378043c794f",[2161],{"_key":2162,"_type":12,"marks":2163,"text":2164},"3f9449ecef7e",[],"nano gateway\u002Ftemplates\u002Fservice.yaml",[],{"_key":2167,"_type":8,"children":2168,"markDefs":2173,"style":33},"46f30e13d158",[2169],{"_key":2170,"_type":12,"marks":2171,"text":2172},"3b0785dff3f9",[],"Add the following values in the section metadata, annotations:",[],{"_key":2175,"_type":8,"children":2176,"markDefs":2181,"style":33},"e8cec9171654",[2177],{"_key":2178,"_type":12,"marks":2179,"text":2180},"8b85c96e91ad",[],"metadata:\n  annotations:\n    #MetalLb - WG\n    metallb.universe.tf\u002FloadBalancerIPs: 10.10.1.101",[],{"_key":2183,"_type":8,"children":2184,"markDefs":2189,"style":33},"7357229b8f9d",[2185],{"_key":2186,"_type":12,"marks":2187,"text":2188},"035b468e5a6d",[],"Set External Environment IP for Bifrost",[],{"_key":2191,"_type":8,"children":2192,"markDefs":2197,"style":33},"6a644c1b7ea7",[2193],{"_key":2194,"_type":12,"marks":2195,"text":2196},"36fb41e19062",[],"This will allow Bifrost to broadcast the proxy public IP as the IP to be reached at from other Validators.",[],{"_key":2199,"_type":8,"children":2200,"markDefs":2205,"style":33},"070ae6339134",[2201],{"_key":2202,"_type":12,"marks":2203,"text":2204},"4922e5d8be7f",[],"nano bifrost\u002Ftemplates\u002Fdeployment.yaml",[],{"_key":2207,"_type":8,"children":2208,"markDefs":2213,"style":33},"99d8409c9cbf",[2209],{"_key":2210,"_type":12,"marks":2211,"text":2212},"4df3c7183d80",[],"Hardcode IP value in the section Env",[],{"_key":2215,"_type":8,"children":2216,"markDefs":2221,"style":33},"d16d484dcff6",[2217],{"_key":2218,"_type":12,"marks":2219,"text":2220},"4caf2ae8d391",[],"env:\n            - name: EXTERNAL_IP\n              value: \"1.2.3.4\"\n            #  valueFrom:\n            #    configMapKeyRef:\n            #      name: {{ include \"bifrost.fullname\" . }}-external-ip\n            #      key: externalIP",[],{"_key":2223,"_type":8,"children":2224,"markDefs":2229,"style":33},"1a90c374c91d",[2225],{"_key":2226,"_type":12,"marks":2227,"text":2228},"b19f894be03f",[],"Set External Environment IP for THORNode",[],{"_key":2231,"_type":8,"children":2232,"markDefs":2237,"style":33},"a5e85c640146",[2233],{"_key":2234,"_type":12,"marks":2235,"text":2236},"5cea9db26147",[],"This will allow THORNode to broadcast the proxy public IP as the IP to be reached at from other Validators.",[],{"_key":2239,"_type":8,"children":2240,"markDefs":2245,"style":33},"8e4a895d28a1",[2241],{"_key":2242,"_type":12,"marks":2243,"text":2244},"c04ff6800622",[],"nano thornode\u002Ftemplates\u002Fdeployment.yaml",[],{"_key":2247,"_type":8,"children":2248,"markDefs":2252,"style":33},"09efd8173750",[2249],{"_key":2250,"_type":12,"marks":2251,"text":2212},"0280d12fd360",[],[],{"_key":2254,"_type":8,"children":2255,"markDefs":2260,"style":33},"851060dbba28",[2256],{"_key":2257,"_type":12,"marks":2258,"text":2259},"a368cc63ff6a",[],"env:\n            - name: EXTERNAL_IP\n              value: \"1.2.3.4\"\n            #  valueFrom:\n            #    configMapKeyRef:\n            #      name: {{ include \"thornode.fullname\" . }}-external-ip\n            #      key: externalIP",[],{"_key":2262,"_type":8,"children":2263,"markDefs":2268,"style":33},"358581bb9c48",[2264],{"_key":2265,"_type":12,"marks":2266,"text":2267},"e43ffbe63738",[],"Run Make Install to Create Node",[],{"_key":2270,"_type":8,"children":2271,"markDefs":2276,"style":33},"0e368bd54738",[2272],{"_key":2273,"_type":12,"marks":2274,"text":2275},"3d061023abaf",[],"NAME=n1 TYPE=validator NET=mainnet make install",[],{"_key":2278,"_type":8,"children":2279,"markDefs":2284,"style":33},"e3ba8609fcc0",[2280],{"_key":2281,"_type":12,"marks":2282,"text":2283},"23de89b9a4c7",[],"Confirm Pods are starting correctly",[],{"_key":2286,"_type":8,"children":2287,"markDefs":2291,"style":33},"f78d7d337d82",[2288],{"_key":2289,"_type":12,"marks":2290,"text":1378},"8a5339c4fe9f",[],[],{"_key":2293,"_type":8,"children":2294,"markDefs":2299,"style":33},"9af257f76425",[2295],{"_key":2296,"_type":12,"marks":2297,"text":2298},"5ac586b50ff4",[],"Troubleshoot — Pod Pending",[],{"_key":2301,"_type":8,"children":2302,"markDefs":2307,"style":33},"846299fe4e26",[2303],{"_key":2304,"_type":12,"marks":2305,"text":2306},"901c88d303c7",[],"If a pod is stuck in Pending state, looking at the description could provide information about what is going on, could be that the host is missing resources to allocate to it.",[],{"_key":2309,"_type":8,"children":2310,"markDefs":2315,"style":33},"7b73ff7aeb4c",[2311],{"_key":2312,"_type":12,"marks":2313,"text":2314},"fc868781d753",[],"Troubleshoot — Pod Init",[],{"_key":2317,"_type":8,"children":2318,"markDefs":2323,"style":33},"689dd5082702",[2319],{"_key":2320,"_type":12,"marks":2321,"text":2322},"4d6c372ae3fb",[],"if a pod is stuck in init state, looking at the logs of the init container could indicate the cause of the hang.",[],{"_key":2325,"_type":8,"children":2326,"markDefs":2331,"style":33},"aaaedf00e981",[2327],{"_key":2328,"_type":12,"marks":2329,"text":2330},"819d021eb653",[],"kubectl logs thornode-688467cf75-xxxxx -c init-external-ip -n n1",[],{"_key":2333,"_type":8,"children":2334,"markDefs":2339,"style":33},"2ee2e7fc66a4",[2335],{"_key":2336,"_type":12,"marks":2337,"text":2338},"40edb8daf306",[],"Confirm Gateway was assigned the correct External-IP by MetalLB",[],{"_key":2341,"_type":8,"children":2342,"markDefs":2347,"style":33},"7a5c1f6de7c9",[2343],{"_key":2344,"_type":12,"marks":2345,"text":2346},"6a2ac24c3389",[],"kubectl get services --namespace n1 --field-selector metadata.name=gateway",[],{"_key":2349,"_type":8,"children":2350,"markDefs":2355,"style":33},"a146091e87f4",[2351],{"_key":2352,"_type":12,"marks":2353,"text":2354},"35384cf57f5e",[],"Confirm Bifrost and THORNode External IP Configuration",[],{"_key":2357,"_type":8,"children":2358,"markDefs":2363,"style":33},"9ef654189f2a",[2359],{"_key":2360,"_type":12,"marks":2361,"text":2362},"07c7bbca6c2a",[],"kubectl exec -i -t deployment\u002Fbifrost -n n1 -- printenv |grep IP\nkubectl exec -i -t deployment\u002Fthornode -n n1 -- printenv |grep IP",[],{"_key":2365,"_type":8,"children":2366,"markDefs":2371,"style":33},"6efaa5dc9847",[2367],{"_key":2368,"_type":12,"marks":2369,"text":2370},"0f511d3aed1a",[],"Confirm Ports are Open from Proxy Public IP",[],{"_key":2373,"_type":8,"children":2374,"markDefs":2379,"style":33},"b1cd0ed8a763",[2375],{"_key":2376,"_type":12,"marks":2377,"text":2378},"3fb39d9e591e",[],"nc -v \u003CProxyPublicIP> 6040\ncurl \u003CProxyPublicIP> 6040",[],{"_key":2381,"_type":8,"children":2382,"markDefs":2387,"style":33},"331024eedf93",[2383],{"_key":2384,"_type":12,"marks":2385,"text":2386},"b584e043f3ed",[],"Review Ports Open from Proxy Public IP",[],{"_key":2389,"_type":8,"children":2390,"markDefs":2395,"style":33},"e41a4c6185de",[2391],{"_key":2392,"_type":12,"marks":2393,"text":2394},"20f126a4a4a6",[],"nmap -Pn -p 22,23,25,80,1317,8080,5040,6040,26656,26657,27146,27147,30000-30004 \u003CProxyPublicIP>",[],{"_key":2397,"_type":8,"children":2398,"markDefs":2403,"style":33},"4f51af8b1e96",[2399],{"_key":2400,"_type":12,"marks":2401,"text":2402},"1418ace35635",[],"Sync THORNode Chain from Snapshot (Optional)",[],{"_key":2405,"_type":8,"children":2406,"markDefs":2411,"style":33},"1f4d92fe1f9d",[2407],{"_key":2408,"_type":12,"marks":2409,"text":2410},"da1e9cf24957",[],"NAME=n1 TYPE=validator NET=mainnet make recover-ninerealms\n\n\u002F\u002F Select Pruned\n\u002F\u002F Select Highest Block",[],{"_key":2413,"_type":8,"children":2414,"markDefs":2419,"style":33},"98860d480b28",[2415],{"_key":2416,"_type":12,"marks":2417,"text":2418},"ef3bec913222",[],"Wait for all chains to Sync",[],{"_key":2421,"_type":8,"children":2422,"markDefs":2427,"style":33},"95d1fb551c63",[2423],{"_key":2424,"_type":12,"marks":2425,"text":2426},"99927821f296",[],"NAME=n1 TYPE=validator NET=mainnet make status",[],{"_key":2429,"_type":8,"children":2430,"markDefs":2435,"style":701},"517796a1e6fd",[2431],{"_key":2432,"_type":12,"marks":2433,"text":2434},"8f740269fd1d",[],"Finish the Validator Configuration as Usual.",[],{"_key":2437,"_type":8,"children":2438,"markDefs":2443,"style":33},"3f856428c934",[2439],{"_key":2440,"_type":12,"marks":2441,"text":2442},"5a92504e243f",[],"Complete Validator configuration as usual.",[],{"_key":2445,"_type":8,"children":2446,"markDefs":2459,"style":33},"b06e8b28c96f",[2447,2451,2455],{"_key":2448,"_type":12,"marks":2449,"text":2450},"73a27f68ef1a",[],"The only exception would be when setting the IP Address. Using ",{"_key":2452,"_type":12,"marks":2453,"text":2454},"4e13191afd93",[977],"make set-ip-address",{"_key":2456,"_type":12,"marks":2457,"text":2458},"11dae84febfd",[]," will broadcast the wrong IP Address. It is important to broadcast the External IP of the WireGuard Proxy by running the following command instead.",[],{"_key":2461,"_type":8,"children":2462,"markDefs":2467,"style":33},"0da0add70207",[2463],{"_key":2464,"_type":12,"marks":2465,"text":2466},"0b50061f8508",[],"kubectl exec -it -n n1 deploy\u002Fthornode -- \u002Fkube-scripts\u002Fset-ip-address.sh \"\u003CProxyExternalIP>\"",[],{"_key":2469,"_type":8,"children":2470,"markDefs":2475,"style":701},"acbe4e9535e1",[2471],{"_key":2472,"_type":12,"marks":2473,"text":2474},"daf8cabb1f12",[],"Bash Prompt (Optional)",[],{"_key":2477,"_type":8,"children":2478,"markDefs":2483,"style":33},"48a5e2e3da6a",[2479],{"_key":2480,"_type":12,"marks":2481,"text":2482},"b67ed3a18f27",[],"The following bashrc helps navigate through multiple validators.",[],{"_key":2485,"_type":8,"children":2486,"markDefs":2491,"style":33},"9cf7c78f39d2",[2487],{"_key":2488,"_type":12,"marks":2489,"text":2490},"41dd98eca2af",[],"Edit bashrc",[],{"_key":2493,"_type":8,"children":2494,"markDefs":2499,"style":33},"c2f617e53a84",[2495],{"_key":2496,"_type":12,"marks":2497,"text":2498},"fa5135989744",[],"nano ~\u002F.bashrc",[],{"_key":2501,"_type":8,"children":2502,"markDefs":2507,"style":33},"b40c65c92e55",[2503],{"_key":2504,"_type":12,"marks":2505,"text":2506},"1610f04336c8",[],"Add the following:",[],{"_key":2509,"_type":8,"children":2510,"markDefs":2515,"style":33},"f483c13fdc79",[2511],{"_key":2512,"_type":12,"marks":2513,"text":2514},"50581ebe510b",[],"alias ms='echo $(date); uptime; apcaccess | grep --color=never  LOADPCT; df -h \u002Fdata; NET=$NET NAME=$NAME TYPE=$TYPE TC_BACKUP=0  make status'\n\nalias makeinstall='NET=$NET NAME=$NAME TYPE=$TYPE TC_BACKUP=0  make install'\nalias makeupdate='NET=$NET NAME=$NAME TYPE=$TYPE TC_BACKUP=0  make update'\nalias makeshell='NET=$NET NAME=$NAME TYPE=$TYPE make shell'\nalias makelogs='NET=$NET NAME=$NAME TYPE=$TYPE make logs'\n\nexport color_chainactive=\"1;36m\"\nexport color_chainstandby=\"0;37m\"\n\nexport color_active=\"1;35m\"\nexport color_standby=\"1;33m\"\nexport color_free=\"1;32m\"\n\nalias c0='echo \"switch to: Shared Chains 0\"; PS1=\"\\[\\033[$color_chainactive\\]C0-CHAIN\\[\\033[01;34m\\] \\w\\[\\e[m\\]\\\\$ \"; NET=\"mainnet\"; TYPE=\"daemons\"; NAME=\"c0\"; cd ~\u002Fc0\u002Fnode-launcher'\nalias c1='echo \"switch to: Shared Chains 1\"; PS1=\"\\[\\033[$color_chainstandby\\]C1-CHAIN\\[\\033[01;34m\\] \\w\\[\\e[m\\]\\\\$ \"; NET=\"mainnet\"; TYPE=\"daemons\"; NAME=\"c1\"; cd ~\u002Fc1\u002Fnode-launcher'\n\nalias n1='echo \"switch to: Node 1\"; PS1=\"\\[\\033[$color_free\\]N1-ABCD\\[\\033[01;34m\\] \\w\\[\\e[m\\]\\\\$ \"; NET=\"mainnet\"; TYPE=\"validator\"; NAME=\"n1\"; cd ~\u002Fn1\u002Fnode-launcher'\nalias n2='echo \"switch to: Node 2\"; PS1=\"\\[\\033[$color_standby\\]N2-EFGH\\[\\033[01;34m\\] \\w\\[\\e[m\\]\\\\$ \"; NET=\"mainnet\"; TYPE=\"validator\"; NAME=\"n2\"; cd ~\u002Fn2\u002Fnode-launcher'\nalias n3='echo \"switch to: Node 3\"; PS1=\"\\[\\033[$color_active\\]N3-IJKL\\[\\033[01;34m\\] \\w\\[\\e[m\\]\\\\$ \"; NET=\"mainnet\"; TYPE=\"validator\"; NAME=\"n3\"; cd ~\u002Fn3\u002Fnode-launcher'",[],{"_key":2517,"_type":8,"children":2518,"markDefs":2523,"style":33},"ac0776ce4c9a",[2519],{"_key":2520,"_type":12,"marks":2521,"text":2522},"263e051c8ece",[],"Reload bashrc",[],{"_key":2525,"_type":8,"children":2526,"markDefs":2531,"style":33},"ed8d057c0a7a",[2527],{"_key":2528,"_type":12,"marks":2529,"text":2530},"9414e241f723",[],"source ~\u002F.bashrc",[],{"_key":2533,"_type":8,"children":2534,"markDefs":2539,"style":701},"28ff89e51cc1",[2535],{"_key":2536,"_type":12,"marks":2537,"text":2538},"5b5955d47e27",[],"Ensure important Ports are open prior to churn",[],{"_key":2541,"_type":8,"children":2542,"markDefs":2547,"style":33},"792bd4edf955",[2543],{"_key":2544,"_type":12,"marks":2545,"text":2546},"e8f852a11f09",[],"Running the following from another computer to confirm that the 4 Ports are open. These are important to establish correct communication to Churn-In.",[],{"_key":2549,"_type":8,"children":2550,"markDefs":2555,"style":33},"adac6b0e355a",[2551],{"_key":2552,"_type":12,"marks":2553,"text":2554},"1a058b21f304",[],"nmap -Pn -p 5040,6040,27146,27147 \u003CProxyExternalIP>",[],{"_key":2557,"_type":8,"children":2558,"markDefs":2563,"style":701},"87cd6207f94d",[2559],{"_key":2560,"_type":12,"marks":2561,"text":2562},"9253a00e4767",[],"Update Node",[],{"_key":2565,"_type":8,"children":2566,"markDefs":2571,"style":33},"731c69effc87",[2567],{"_key":2568,"_type":12,"marks":2569,"text":2570},"b8b4d1ae7fd4",[],"Update Shared Chains",[],{"_key":2573,"_type":8,"children":2574,"markDefs":2579,"style":33},"c9e9c2c8fa69",[2575],{"_key":2576,"_type":12,"marks":2577,"text":2578},"d026be0391f8",[],"cd ~\u002Fc0\u002Fnode-launcher\ngit pull --rebase --autostash\nNAME=c0 TYPE=daemons NET=mainnet make install",[],{"_key":2581,"_type":8,"children":2582,"markDefs":2587,"style":33},"7fe409480837",[2583],{"_key":2584,"_type":12,"marks":2585,"text":2586},"711c7c1eed9d",[],"Update Validators",[],{"_key":2589,"_type":8,"children":2590,"markDefs":2595,"style":33},"0ce273545a54",[2591],{"_key":2592,"_type":12,"marks":2593,"text":2594},"2e5e5d9d9977",[],"cd ~\u002Fn1\u002Fnode-launcher\ngit pull --rebase --autostash\nNAME=n1 TYPE=validator NET=mainnet make update\n\ncd ~\u002Fn2\u002Fnode-launcher\ngit pull --rebase --autostash\nNAME=n2 TYPE=validator NET=mainnet make update",[],{"_key":2597,"_type":8,"children":2598,"markDefs":2603,"style":701},"40eb34dfae47",[2599],{"_key":2600,"_type":12,"marks":2601,"text":2602},"6f7c0831dd6f",[],"Scale Down Pods to Reboot Server",[],{"_key":2605,"_type":8,"children":2606,"markDefs":2611,"style":33},"78cdbf40d4d3",[2607],{"_key":2608,"_type":12,"marks":2609,"text":2610},"5f087f4119ac",[],"Scaling down Pods prior to rebooting server can help preventing chain corruptions.",[],{"_key":2613,"_type":8,"children":2614,"markDefs":2619,"style":33},"47d2d367506b",[2615],{"_key":2616,"_type":12,"marks":2617,"text":2618},"a396b3c4dccc",[],"\u002F\u002F Scale down all Pods\nkubectl -n c0 scale deployments --replicas=0 --all\nkubectl -n n1 scale deployments --replicas=0 --all\nkubectl -n n2 scale deployments --replicas=0 --all\nkubectl -n n3 scale deployments --replicas=0 --all\n\n\u002F\u002F Wait all pods to terminate\nk9s\n\nsudo shutdown -h now",[],{"_key":2621,"_type":8,"children":2622,"markDefs":2627,"style":33},"55fd9834e5a3",[2623],{"_key":2624,"_type":12,"marks":2625,"text":2626},"bdf6e0bcdb52",[],"Scale up after server boot up",[],{"_key":2629,"_type":8,"children":2630,"markDefs":2635,"style":33},"c3f33a41a665",[2631],{"_key":2632,"_type":12,"marks":2633,"text":2634},"ccef8fe8999e",[],"kubectl -n c0 scale deployments --replicas=1 --all\nkubectl -n n1 scale deployments --replicas=1 --all\nkubectl -n n2 scale deployments --replicas=1 --all\nkubectl -n n3 scale deployments --replicas=1 --all",[],{"_key":2637,"_type":8,"children":2638,"markDefs":2643,"style":701},"1befb260d017",[2639],{"_key":2640,"_type":12,"marks":2641,"text":2642},"7f63718e52bd",[],"Conclusion",[],{"_key":2645,"_type":8,"children":2646,"markDefs":2651,"style":33},"847de159842a",[2647],{"_key":2648,"_type":12,"marks":2649,"text":2650},"1d0c8937805b",[],"This guide cover a pretty innovative way to run THORChain Validators with a lot of flexibility. Please reach out to me should you have any suggestions on how to improve this setup.",[],{"_key":2653,"_type":8,"children":2654,"markDefs":2668,"style":33},"7a7ced78a931",[2655,2659,2664],{"_key":2656,"_type":12,"marks":2657,"text":2658},"543a39db683e",[],"See ",{"_key":2660,"_type":12,"marks":2661,"text":2663},"b298fcc0b228",[2662],"fd92e1a0a2","Part 2",{"_key":2665,"_type":12,"marks":2666,"text":2667},"878c4839a712",[]," about adding a MAYA Node to this Setup.",[2669],{"_key":2662,"_type":26,"link":2670},{"anchor":28,"getParameters":28,"isInternal":190,"openInNewTab":28,"title":28,"url":2671},"https:\u002F\u002Fblog.thorchain.org\u002Fthorchain-bare-metal-validator-part-2-multi-node-using-microk8s\u002F",{"_key":2673,"_type":8,"children":2674,"markDefs":2688,"style":33},"1dad24a02157",[2675,2679,2684],{"_key":2676,"_type":12,"marks":2677,"text":2678},"0a3387a44333",[],"See my other guide: ",{"_key":2680,"_type":12,"marks":2681,"text":2683},"7f292e9fcc30",[2682],"6ae52ec8a8","THORChain Validators Migration — The Exhaustive Guide",{"_key":2685,"_type":12,"marks":2686,"text":2687},"5dcd97ee73c1",[]," for guidance with migration of an active validator from the cloud to a bare-metal server.",[2689],{"_key":2682,"_type":26,"link":2690},{"anchor":28,"getParameters":28,"isInternal":190,"openInNewTab":28,"title":28,"url":2691},"https:\u002F\u002Fblog.thorchain.org\u002Fthorchain-validator-migration-the-exhaustive-guide\u002F",{"_key":2693,"_type":2694,"backgroundColor":28,"buttons":2695,"disabled":190,"linkCards":28,"media":2698,"sliceId":28,"text":2703,"title":2704},"99d1b8cb0c53","heroSlice",[2696],{"anchor":28,"getParameters":28,"isInternal":190,"label":2697,"openInNewTab":28,"theme":429,"title":28,"url":430},"Swap Now",{"image":2699,"type":2702},{"alt":47,"assetId":2700,"caption":28,"crop":28,"height":506,"hotspot":28,"lqip":2701,"width":506},"image-de03568132b33de541197dd8a121e7ae69e060b9-1000x1000-svg","data:image\u002Fpng;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAABu0lEQVR4nK2VT0\u002FbQBDF802h3yFSzpzpNcmJnrimlaVeqBCXCkGJyAEqKpJQEDFSauQk9s6ud2zCq2ZLUsdJIBE5PGnt9+a3f8Zal5RSTERjrTXeIyIaK6VsSQZE9LwB4LOwSkXDGLOWdKF+BigBa+1aMgXoFChGkiQuxMxI03Ql2QJ0BihSSiGOYxecA1gDpgjW0GpArTWGwyHCMHTPRWCmY9jwAWYUul1kWfY6ULY8MZetMKUIbPRqK+SXWfOSInk\u002FOdeiz8zLgZOGLGqKZIIggO\u002F76PV66Pf77rztW03JrzYPFJDneajVak6NRgPtdls+6NebIrNKKH+GAu90OqjX6yiXy6hUKqhWq2i1WoiiaDlwlBDu7QBdfsRNGuJ39qI0xMXwHt+ufqBxdogvzSMcXJ3iZ3CLgY4XA8loXHOA\u002FadLfByfTrWbnWCXj\u002F8pO5nxJHvNgaudA8aG0GQfO0\u002Ff8WH8dart1MOW+uwk47wn2Sb7rnYOqDShawJ49hc+ceu\u002FknPs6aaTjPOeZLsmcLXzWybCQI3gx4+4i\u002F\u002Fg9g1JRrIDNXK1C28bMaTL6ygPc8CNX7BybW\u002FyF\u002FAXRWrnrGjw4yAAAAAASUVORK5CYII=","image","No sign up required.\nEasy to use.",[2705],{"_key":2706,"_type":8,"children":2707,"markDefs":2713,"style":33},"9b9f5300a491",[2708],{"_key":2709,"_type":12,"marks":2710,"text":2712},"570460bff9df",[2711],"black","Try the World’s Leading Bitcoin DEX",[],[2715],{"name":480,"slug":481},1781332275950]