{"id":36438888,"url":"https://github.com/mcpride/giotamonic","last_synced_at":"2026-01-11T20:53:48.036Z","repository":{"id":61628805,"uuid":"138771128","full_name":"mcpride/giotamonic","owner":"mcpride","description":"Generate, restore IOTA seed from Bitcoin BIP39 mnemonic word list.","archived":false,"fork":false,"pushed_at":"2018-07-01T11:54:15.000Z","size":19,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-06-20T13:34:45.390Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mcpride.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-06-26T17:29:21.000Z","updated_at":"2024-06-20T13:34:45.391Z","dependencies_parsed_at":"2022-10-19T19:00:13.221Z","dependency_job_id":null,"html_url":"https://github.com/mcpride/giotamonic","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/mcpride/giotamonic","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcpride%2Fgiotamonic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcpride%2Fgiotamonic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcpride%2Fgiotamonic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcpride%2Fgiotamonic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mcpride","download_url":"https://codeload.github.com/mcpride/giotamonic/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcpride%2Fgiotamonic/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28323591,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T18:42:50.174Z","status":"ssl_error","status_checked_at":"2026-01-11T18:39:13.842Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-11T20:53:47.518Z","updated_at":"2026-01-11T20:53:48.029Z","avatar_url":"https://github.com/mcpride.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/mcpride/giotamonic.svg?branch=master)](https://travis-ci.org/mcpride/giotamonic) [![license](https://img.shields.io/github/license/mashape/apistatus.svg?style=flat)](https://raw.githubusercontent.com/mcpride/giotamonic/master/LICENSE)\n\n\n# GIOTAmonic\n\nThis is a command line tool to help user generate IOTA seed from Bitcoin BIP39 mnenomic\n\n## Install\n\n``` shell\n$ go install github.com/mcpride/giotamonic\n```\n\n## Build\n\nGIOTAmonic has a dependency to the tool `glide` which manages related vendor packages - so it must be installed.\n\nTo install the vendor packages run:\n\n``` shell\n$ glide install\n```\n\nthen you can build it with\n\n``` shell\n$ go build\n```\n\nor test the sub package `iota_mnemonic` with following command:\n\n``` shell\n$ go test ./iota_mnemonic\n```\n\n\n\n## Usage\n\nWith `giotamonic help` you will get a help how to use giotamonic:\n\n``` shell\n$ giotamonic help\n\nNAME:\n   giotamonic - Generate, restore IOTA seed from Bitcoin BIP39 mnemonic word list.\n\nUSAGE:\n   giotamonic [global options] command [command options] [arguments...]\n\nVERSION:\n   0.1.0\n\nCOMMANDS:\n     new      Create new mnemonic and iota seed\n     to-seed  Convert mnemonic to iota seed\n```\n\n### Generate new seed\n\nTo output a new seed and the corresponding BIP39 mnemonic word list, execute giotamonic mit the `new` command:\n\n``` shell\n$ giotamonic help new\n\nNAME:\n   giotamonic new - Create new mnemonic and iota seed\n\nUSAGE:\n   giotamonic new [command options] [arguments...]\n\nDESCRIPTION:\n   Creates new BIP0039 mnemonic word list and corresponding - optional passphrase encrypted - iota seed.\n\nOPTIONS:\n   --passphrase value  Additional passphrase\n   --bitsize value     Bit length of the mnemonic entropy. Must be [128, 256] and a multiple of 32 (default: 256)\n```\n\n#### Examples\n\n* 24 word mnemonic + seed:\n``` shell\n$ giotamonic new\n\nMnemonic: abuse episode network recall cement connect left sport nose claw reveal certain struggle north strike surprise tennis luxury begin pole trap quote labor collect\nSeed: HYRQZWPCRFIQ9BZOJBJGMNBRKAHWRSZKYZWS9NTTGPCWLRFUFUGHORONUHWXGNUQZUQGNWPPKUUEEXJQY\n```\n\n* 12 word mnemonic + seed:\n``` shell\n$ giotamonic new --bitsize 128\n\nMnemonic: ugly scorpion hour trial blue forum glass life click feature mean sentence\nSeed: IUSOCINQJUYBBGWDKBIKWU9YYCFHJFRALIPPHGIQHMYRWUNVZLWFEAHZDKFRFGZAAEWMKEI9YTRRGCYZA\n```\n\n* Word mnemonic + seed (passphrase encrypted):\n``` shell\n$ giotamonic new --passphrase \"Mei Pa$$frA$e\"\n\nMnemonic: rifle rhythm zebra practice pet fish general accuse virtual traffic history blanket visit gaze leave city alpha injury myself pizza upgrade trade detect awake\nSeed: KIVQGMYMDXXOXMDKIKOXHDYMWFTRHXHWZPEPHHIWONSZLLCQMVTVHLICMUUEIERAQFZB9ZPKKGHFBWCP9\n```\n\n### Generate seed from existing mnemonic\n\n``` shell\n$ giotamonic help to-seed\n\nNAME:\n   giotamonic to-seed - Convert mnemonic to iota seed\n\nUSAGE:\n   giotamonic to-seed [command options] [arguments...]\n\nDESCRIPTION:\n   Converts mnemonic words to iota seed.\n\nOPTIONS:\n   --passphrase value  Additional passphrase\n```\n\n#### Examples\n\n``` shell\n$ giotamonic to-seed \"ugly scorpion hour trial blue forum glass life click feature mean sentence\"\n\nIUSOCINQJUYBBGWDKBIKWU9YYCFHJFRALIPPHGIQHMYRWUNVZLWFEAHZDKFRFGZAAEWMKEI9YTRRGCYZA\n```\n\n* with passphrase:\n``` shell\n$ giotamonic to-seed \"ugly scorpion hour trial blue forum glass life click feature mean sentence\" --passphrase \"Mei Pa$$frA$e\"\n\nXLQHKPKWBASMVJVWRDPDIKFOGTEFQGSCUXCKHSQXTTSEAXIL9JJGEWQHHGXFWKPBUUBNJTQEGEKPDSOKX\n```\n\n* You can also use pipes:\n``` shell\n$ giotamonic to-seed --passphrase \"Mei Pa$$frA$e\" \u003c mnemonic.txt \u003e seed.txt\n```\n\n### How it works\n\nThe mnemonic and passphrase will be used to generate a 64 byte seed according to the [BIP-0039](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki) standard. IOTA seeds consist of 81 trytes. Deterministic conversions can done between 81 trytes and 48 bytes. For the extraction of 4 x 48 byte slices from a 64 byte block I implemented the [simple algorithm from Bart Slinger](https://github.com/iota-trezor/trezor-mcu/blob/25292640b560a644ebf88d0dae848e8928e68127/firmware/iota.c#L70). These slices will be absorbed by IOTA Kerl and then squeezed out to an IOTA hash seed.\n\n**HINT: To increase the difficultiy for hacking your mnemonic seed in the future you should use a strong passhrase!**\n\n#### More detailed\n\nThe following steps sketches the algrorithm in prosa:\n\n* Generate the 64 bytes seed from mnemonic words and password according to BIP-39\n* Slide the 64 bytes of mnemonic seed into 4 x 16 bytes blocks `[1|2|3|4]`.\n* Get the first 48 bytes (first 3 blocks): `[1|2|3]` and absorb them with IOTA's `Kerl`.\n* Get the last 48 bytes (last 3 blocks): `[2|3|4]` and absorb them with IOTA's `Kerl`.\n* Get the last 32 bytes (last 2 blocks) + first 16 bytes (1st block): `[3|4|1]` and absorb them with IOTA's `Kerl`.\n* Get tshe last 16 bytes (last block) + first 32 bytes (first 2 blocks): `[4|1|2]` and absorb them with IOTA's `Kerl`.\n* Call `Squeeze` from `Kerl` to get the IOTA seed.\n\n### License\n\nGiotamonic and it's sub packages are under the MIT license. See the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcpride%2Fgiotamonic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmcpride%2Fgiotamonic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcpride%2Fgiotamonic/lists"}