Draft: Resolve "Error: Base 58 requirement is violated"
Merge request reports
Activity
assigned to @Nicolas80
added 1 commit
- e8da3aa9 - Added extra message when the DB parsing of DbAccountId fails, so we know for...
@HugoTrentesaux could you take this branch locally and try to perform the
gcli vault list all
with your problematic database ?It should display the address string for which it failed the parsing:
gcli vault list all DatabaseError(Custom("Cannot parse DbAccountId for string '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY,' - error: Base 58 requirement is violated"))
$ git status Sur la branche 48-error-base-58-requirement-is-violated Votre branche est à jour avec 'origin/48-error-base-58-requirement-is-violated'. rien à valider, la copie de travail est propre $ cargo build -j 4 [...] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.84s $ ./target/debug/gcli vault list all DatabaseError(Custom("Cannot parse DbAccountId for string '\"5CiGCfbk4X9wtJHguwUCFBmZaywZYo1e9ewtTzhExGL5P5gK\"' - error: Base 58 requirement is violated"))
ah je vois ! il y a les guillemets dedans ><
o_O mais comment les guillemets sont arrivés jusque dans la DB ??
Edited by Nicolas80Ok, j'ai un "fix" qui fonctionne; mais c'est un peu moche; surtout le dernier commit ou on doit matcher de 2 manières dans la recherche des children.
Est-ce que tu peux tester la branche mise à jour dans cette MR ?
Et faire un review si ça te semble acceptable ou si on préfère ne pas faire le changement et tenter de trouver la cause initiale et voir si on pourrait arriver à l'empêcher ?
J'ai ajouté un commit en plus qui ajoute un
debug!
log pour permettre de vérifier la valeur string que l'on fournit àsea-orm
pour la persistence.Exemple d'import en activant les logs debug (en format g1v1, pour id:"test1" secret:"test1"):
RUST_LOG=debug gcli vault import -S g1v1 [2025-03-26T12:20:43Z INFO sqlx::query] summary="PRAGMA foreign_keys = ON; …" db.statement="\n\nPRAGMA foreign_keys = ON;\n" rows_affected=0 rows_returned=0 elapsed=47.3µs elapsed_secs=4.73e-5 [2025-03-26T12:20:43Z INFO sqlx::query] summary="CREATE TABLE IF NOT …" db.statement="\n\nCREATE TABLE IF NOT EXISTS \"vault_account\" (\n \"address\" varchar NOT NULL PRIMARY KEY,\n \"name\" varchar UNIQUE,\n \"path\" varchar,\n \"crypto_scheme\" varchar,\n \"encrypted_suri\" varbinary_blob,\n \"parent\" varchar,\n FOREIGN KEY (\"parent\") REFERENCES \"vault_account\" (\"address\")\n)\n" rows_affected=0 rows_returned=0 elapsed=187.67µs elapsed_secs=0.00018767 > G1v1 id: ******** > G1v1 password: ******** The G1v1 public key for the provided secret is: '8KJjnraAVyGpdioeL5NDjgMXQ72UF58LKhaudjpKhPnt' > Is it the correct one (if not, you should try again to input G1v1 id/password) ? Yes Trying to import for SS58 address :'5EXDzzCMmvXHupvcyE14bxqTvXqP6v78M6DWFX7n5vyA4yBp' [2025-03-26T12:20:54Z DEBUG gcli::entities::vault_account] DB converting DbAccountId to string:'5EXDzzCMmvXHupvcyE14bxqTvXqP6v78M6DWFX7n5vyA4yBp' [2025-03-26T12:20:54Z INFO sqlx::query] summary="SELECT \"vault_account\".\"address\", \"vault_account\".\"name\", \"vault_account\".\"path\", …" db.statement="\n\nSELECT\n \"vault_account\".\"address\",\n \"vault_account\".\"name\",\n \"vault_account\".\"path\",\n \"vault_account\".\"crypto_scheme\",\n \"vault_account\".\"encrypted_suri\",\n \"vault_account\".\"parent\"\nFROM\n \"vault_account\"\nWHERE\n \"vault_account\".\"address\" = ?\nLIMIT\n ?\n" rows_affected=0 rows_returned=0 elapsed=137.96µs elapsed_secs=0.00013796 Enter password to protect the key > Password ******** (Optional) Enter a name for the vault entry > Name: test-db-serialization [2025-03-26T12:21:15Z INFO sqlx::query] summary="SELECT COUNT(*) AS num_items …" db.statement="\n\nSELECT\n COUNT(*) AS num_items\nFROM\n (\n SELECT\n \"vault_account\".\"address\",\n \"vault_account\".\"name\",\n \"vault_account\".\"path\",\n \"vault_account\".\"crypto_scheme\",\n \"vault_account\".\"encrypted_suri\",\n \"vault_account\".\"parent\"\n FROM\n \"vault_account\"\n WHERE\n \"vault_account\".\"name\" = ?\n ) AS \"sub_query\"\n" rows_affected=0 rows_returned=1 elapsed=111.22µs elapsed_secs=0.00011122 [2025-03-26T12:21:15Z DEBUG gcli::entities::vault_account] DB converting DbAccountId to string:'5EXDzzCMmvXHupvcyE14bxqTvXqP6v78M6DWFX7n5vyA4yBp' [2025-03-26T12:21:15Z INFO sqlx::query] summary="SELECT \"vault_account\".\"address\", \"vault_account\".\"name\", \"vault_account\".\"path\", …" db.statement="\n\nSELECT\n \"vault_account\".\"address\",\n \"vault_account\".\"name\",\n \"vault_account\".\"path\",\n \"vault_account\".\"crypto_scheme\",\n \"vault_account\".\"encrypted_suri\",\n \"vault_account\".\"parent\"\nFROM\n \"vault_account\"\nWHERE\n \"vault_account\".\"address\" = ?\nLIMIT\n ?\n" rows_affected=0 rows_returned=0 elapsed=12.29µs elapsed_secs=1.229e-5 [2025-03-26T12:21:15Z DEBUG gcli::entities::vault_account] DB converting DbAccountId to string:'5EXDzzCMmvXHupvcyE14bxqTvXqP6v78M6DWFX7n5vyA4yBp' [2025-03-26T12:21:15Z DEBUG gcli::entities::vault_account] DB converting DbAccountId to string:'5EXDzzCMmvXHupvcyE14bxqTvXqP6v78M6DWFX7n5vyA4yBp' [2025-03-26T12:21:15Z INFO sqlx::query] summary="INSERT INTO \"vault_account\" (\"address\", …" db.statement="\n\nINSERT INTO\n \"vault_account\" (\n \"address\",\n \"name\",\n \"path\",\n \"crypto_scheme\",\n \"encrypted_suri\"\n )\nVALUES\n (?, ?, ?, ?, ?)\n" rows_affected=1 rows_returned=0 elapsed=174.18µs elapsed_secs=0.00017418 [2025-03-26T12:21:15Z DEBUG gcli::entities::vault_account] DB converting DbAccountId to string:'5EXDzzCMmvXHupvcyE14bxqTvXqP6v78M6DWFX7n5vyA4yBp' [2025-03-26T12:21:15Z INFO sqlx::query] summary="SELECT \"vault_account\".\"address\", \"vault_account\".\"name\", \"vault_account\".\"path\", …" db.statement="\n\nSELECT\n \"vault_account\".\"address\",\n \"vault_account\".\"name\",\n \"vault_account\".\"path\",\n \"vault_account\".\"crypto_scheme\",\n \"vault_account\".\"encrypted_suri\",\n \"vault_account\".\"parent\"\nFROM\n \"vault_account\"\nWHERE\n \"vault_account\".\"address\" = ?\nLIMIT\n ?\n" rows_affected=0 rows_returned=1 elapsed=12.28µs elapsed_secs=1.228e-5 Creating <Base> account Base[address:5EXDzzCMmvXHupvcyE14bxqTvXqP6v78M6DWFX7n5vyA4yBp, g1v1_pub_key:8KJjnraAVyGpdioeL5NDjgMXQ72UF58LKhaudjpKhPnt, name:Some("test-db-serialization"), crypto_scheme:Some(Ed25519)] Change done
On voit mes lignes de log
DEBUG gcli::entities::vault_account] DB converting DbAccountId to string:'5EXDzzCMmvXHupvcyE14bxqTvXqP6v78M6DWFX7n5vyA4yBp'
en plus des infos & debug de sea-orm.Ce serait intéressant que tu tente d'ajouter un compte avec cette branche buildée en local et voir si on remarque qu'il ajoute des guillemets à cet endroit là.
Edited by Nicolas80
mentioned in issue #48
added 1 commit
- 5924a73e - * Added `debug!` log inside `impl From<DbAccountId> for Value` used to...