{"id":1080,"date":"2023-02-19T16:26:45","date_gmt":"2023-02-19T21:26:45","guid":{"rendered":"https:\/\/sunapi386.ca\/wordpress\/?p=1080"},"modified":"2023-02-19T16:26:45","modified_gmt":"2023-02-19T21:26:45","slug":"convert-cardano-bech32-address-to-stake-key","status":"publish","type":"post","link":"https:\/\/sunapi386.ca\/wordpress\/convert-cardano-bech32-address-to-stake-key\/","title":{"rendered":"Convert cardano Bech32 address to stake key"},"content":{"rendered":"\n<p>Cardano payment addresses are bech32 encoded since Shelly. These addresses can be decoded in python<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from typing import Optional\nimport bech32\nimport binascii\n\n\ndef resolve_addr2stake_py(address: str) -> Optional&#91;str]:\n    hrp, by = bech32.bech32_decode(address)\n    if hrp != 'addr':\n        return None\n    words = bech32.convertbits(by, 5, 8, False)\n    res = ''\n    for w in words:\n        res = f'{res}{format(w, \"x\").zfill(2)}'\n    mainnet_addr = f'e1{res&#91;-56:]}'\n    array = binascii.unhexlify(mainnet_addr)\n    words = &#91;x for x in array]\n    bech32_words = bech32.convertbits(words, 8, 5)\n    bech32_addr = bech32.bech32_encode('stake', bech32_words)\n    return bech32_addr<\/code><\/pre>\n\n\n\n<p>You can confirm this works by <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>address = 'addr1qxdvcswn0exwc2vjfr6u6f6qndfhmk94xjrt5tztpelyk4yg83zn9d4vrrtzs98lcl5u5q6mv7ngmg829xxvy3g5ydls7c76wu'\n\nresolve_addr2stake_py(address)\n\nOut: 'stake1uxyrc3fjk6kp343gznlu06w2qddk0f5d5r4znrxzg52zxlclk0hlq'\n\n\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Cardano payment addresses are bech32 encoded since Shelly. These addresses can be decoded in python You can confirm this works by<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34],"tags":[],"class_list":["post-1080","post","type-post","status-publish","format-standard","hentry","category-thoughts"],"_links":{"self":[{"href":"https:\/\/sunapi386.ca\/wordpress\/wp-json\/wp\/v2\/posts\/1080","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sunapi386.ca\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sunapi386.ca\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sunapi386.ca\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sunapi386.ca\/wordpress\/wp-json\/wp\/v2\/comments?post=1080"}],"version-history":[{"count":1,"href":"https:\/\/sunapi386.ca\/wordpress\/wp-json\/wp\/v2\/posts\/1080\/revisions"}],"predecessor-version":[{"id":1083,"href":"https:\/\/sunapi386.ca\/wordpress\/wp-json\/wp\/v2\/posts\/1080\/revisions\/1083"}],"wp:attachment":[{"href":"https:\/\/sunapi386.ca\/wordpress\/wp-json\/wp\/v2\/media?parent=1080"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sunapi386.ca\/wordpress\/wp-json\/wp\/v2\/categories?post=1080"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sunapi386.ca\/wordpress\/wp-json\/wp\/v2\/tags?post=1080"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}