{"id":15146879,"url":"https://github.com/cake-tech/polyseed_dart","last_synced_at":"2026-03-08T14:32:48.680Z","repository":{"id":197011432,"uuid":"693623372","full_name":"cake-tech/polyseed_dart","owner":"cake-tech","description":"Mnemonic seed dart library for Monero and other CryptoNote-based currencies.","archived":false,"fork":false,"pushed_at":"2024-04-16T15:24:41.000Z","size":290,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"trunk","last_synced_at":"2024-05-01T16:44:21.178Z","etag":null,"topics":["cakewallet","dart-package","flutter-package","monero","polyseed","seed"],"latest_commit_sha":null,"homepage":"https://pub.dev/packages/polyseed","language":"Dart","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/cake-tech.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-19T11:49:48.000Z","updated_at":"2024-06-24T13:10:20.897Z","dependencies_parsed_at":null,"dependency_job_id":"7b763a79-62d6-4980-adb7-6d7d4e27e9a4","html_url":"https://github.com/cake-tech/polyseed_dart","commit_stats":null,"previous_names":["cake-tech/polyseed_dart"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cake-tech%2Fpolyseed_dart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cake-tech%2Fpolyseed_dart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cake-tech%2Fpolyseed_dart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cake-tech%2Fpolyseed_dart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cake-tech","download_url":"https://codeload.github.com/cake-tech/polyseed_dart/tar.gz/refs/heads/trunk","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219867198,"owners_count":16555821,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["cakewallet","dart-package","flutter-package","monero","polyseed","seed"],"created_at":"2024-09-26T12:20:20.745Z","updated_at":"2025-10-24T01:31:04.614Z","avatar_url":"https://github.com/cake-tech.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Polyseed\n\nA dart implementation of [polyseed](https://github.com/tevador/polyseed).\n\n## Features\n\n* 16 mnemonic words (36% shorter than the original 25-word seed)\n* embedded wallet birthday to optimize restoring from the seed\n* supports encryption by a passphrase\n* can store up to 3 custom bits\n* advanced checksum based on a polynomial code\n* seeds are incompatible between different coins\n\nSupported languages:\n\n1. English\n2. Japanese\n3. Korean\n4. Spanish\n5. French\n6. Italian\n7. Czech\n8. Portuguese\n9. Chinese (Simplified)\n10. Chinese (Traditional)\n\nFor languages based on the latin alphabet, just the first 4 characters of each word need to be provided when restoring a\nseed. French and Spanish seeds can be input with or without accents. Wordlists are based\non [BIP-39](https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md) with a few minor changes.\n\n## Encoding\n\nEach word contains 11 bits of information. The data are encoded as follows:\n\n| word # | contents                                 |\n|--------|------------------------------------------|\n| 1      | checksum (11 bits)                       |\n| 2-6    | secret seed (10 bits) + features (1 bit) |\n| 7-16   | secret seed (10 bits) + birthday (1 bit) |\n\nIn total, there are 11 bits for the checksum, 150 bits for the secret seed, 5 feature bits and 10 birthday bits. Because\nthe feature and birthday bits are non-random, they are spread over the 15 data words so that two different mnemonic\nphrases are unlikely to have the same word in the same position.\n\n### Checksum\n\nThe mnemonic phrase can be treated as a polynomial over GF(2048), which enables the use of an efficient Reed-Solomon\nerror correction code with one check word. All single-word errors can be detected and all single-word erasures can be\ncorrected without false positives.\n\nTo prevent the seed from being accidentally used with a different cryptocurrency, a coin flag is XORed with the second\nword after the checksum is calculated. Checksum validation will fail unless the wallet software XORs the same coin flag\nwith the second word when restoring.\n\n### Feature bits\n\nThere are 5 feature bits in the phrase. The first 2 bits are for internal use (one bit is used to indicate a seed\nencrypted by a passphrase and the other bit is reserved for a future update of the key derivation function). The\nremaining 3 bits are reserved for library users and can be enabled and accessed through the API. The library requires\nreserved bits to be zero (if not, `UnsupportedSeedFeatureException` is thrown).\n\n### Wallet birthday\n\nThe mnemonic phrase stores the approximate date when the wallet was created. This allows the seed to be generated\noffline without access to the blockchain. Wallet software can easily convert a date to the corresponding block height\nwhen restoring a seed.\n\nThe wallet birthday has a resolution of 2629746 seconds (1/12 of the average Gregorian year). All dates between November\n2021 and February 2107 can be represented.\n\n### Secret seed\n\nPolyseed was designed for the 128-bit security level. This corresponds to the security of the ed25519 elliptic curve,\nwhich requires [about 2\u003csup\u003e126\u003c/sup\u003e operations](https://safecurves.cr.yp.to/rho.html) to break a key.\n\nThe private key is derived from the 150-bit secret seed using PBKDF2-HMAC-SHA256 with 10000 iterations. The KDF\nparameters were selected to allow for the key to be derived by hardware wallets. Key generation is domain-separated by\nthe wallet birthday month, seed features and the coin flag.\n\nThe size of the secret seed and the domain separation parameters provide a comfortable security margin\nagainst [multi-target attacks](https://blog.cr.yp.to/20151120-batchattacks.html).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcake-tech%2Fpolyseed_dart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcake-tech%2Fpolyseed_dart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcake-tech%2Fpolyseed_dart/lists"}