## wallet_propose [[Source]
](https://github.com/ripple/rippled/blob/master/src/ripple/rpc/handlers/WalletPropose.cpp "Source") Use the `wallet_propose` method to generate a key pair and XRP Ledger address. This command only generates keys, and does not affect the XRP Ledger itself in any way. To become a funded address stored in the ledger, the address must [receive a Payment transaction](reference-transaction-format.html#creating-accounts) that provides enough XRP to meet the [reserve requirement](concept-reserves.html). *The `wallet_propose` request is an [admin command](#connecting-to-rippled) that cannot be run by unprivileged users!* (This command is restricted to protect against people sniffing network traffic for account secrets, since admin commands are not usually transmitted over the outside network.) [Updated in: rippled 0.31.0][New in: rippled 0.31.0] #### Request Format An example of the request format: *WebSocket (with key type)* ``` { "command": "wallet_propose", "seed": "snoPBrXtMeMyMHUVTgbuqAfg1SUTb", "key_type": "secp256k1" } ``` *WebSocket (no key type)* ``` { "command": "wallet_propose", "passphrase": "masterpassphrase" } ``` *JSON-RPC (with key type)* ``` { "method": "wallet_propose", "params": [ { "seed": "snoPBrXtMeMyMHUVTgbuqAfg1SUTb", "key_type": "secp256k1" } ] } ``` *JSON-RPC (no key type)* ``` { "method": "wallet_propose", "params": [ { "passphrase": "snoPBrXtMeMyMHUVTgbuqAfg1SUTb" } ] } ``` *Commandline* ``` #Syntax: wallet_propose [passphrase] rippled wallet_propose masterpassphrase ``` The request can contain the following parameters: | `Field` | Type | Description | |:-------------|:-------|:-----------------------------------------------------| | `key_type` | String | Which elliptic curve to use for this key pair. Valid values are `ed25519` and `secp256k1` (all lower case). Defaults to `secp256k1`. | | `passphrase` | String | _(Optional)_ Generate a key pair and address from this seed value. This value can be formatted in [hexadecimal][], [base58][], [RFC-1751][], or as an arbitrary string. Cannot be used with `seed` or `seed_hex`. | | `seed` | String | _(Optional)_ Generate the key pair and address from this [base58][]-encoded seed value. Cannot be used with `passphrase` or `seed_hex`. | | `seed_hex` | String | _(Optional)_ Generate the key pair and address from this seed value in [hexadecimal][] format. Cannot be used with `passphrase` or `seed`. | You must provide **at most one** of the following fields: `passphrase`, `seed`, or `seed_hex`. If you omit all three, `rippled` uses a random seed. **Note:** [Ed25519](https://ed25519.cr.yp.to/) support is experimental. The commandline version of this command cannot generate Ed25519 keys. ##### Specifying a Seed For most cases, you should use a seed value generated from a strong source of randomness. Anyone who knows the seed value for an address has full power to [send transactions signed by that address](reference-transaction-format.html#authorizing-transactions). Generally, running this command with no parameters is a good way to generate a random seed. Cases where you would specify a known seed include: * Re-calculating your address when you only know the seed associated with that address * Testing `rippled` functionality If you do specify a seed, you can specify it in any of the following formats: * As a [base58][] secret key format string. Example: `snoPBrXtMeMyMHUVTgbuqAfg1SUTb`. * As an [RFC-1751][] format string (secp256k1 key pairs only). Example: `I IRE BOND BOW TRIO LAID SEAT GOAL HEN IBIS IBIS DARE`. * As a 128-bit [hexadecimal][] string. Example: `DEDCE9CE67B451D852FD4E846FCDE31C`. * An arbitrary string to use as a seed value. For example: `masterpassphrase`. [base58]: https://en.wikipedia.org/wiki/Base58 [RFC-1751]: https://tools.ietf.org/html/rfc1751 [hexadecimal]: https://en.wikipedia.org/wiki/Hexadecimal #### Response Format An example of a successful response: *WebSocket* ``` { "id": 2, "status": "success", "type": "response", "result": { "account_id": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh", "key_type": "secp256k1", "master_key": "I IRE BOND BOW TRIO LAID SEAT GOAL HEN IBIS IBIS DARE", "master_seed": "snoPBrXtMeMyMHUVTgbuqAfg1SUTb", "master_seed_hex": "DEDCE9CE67B451D852FD4E846FCDE31C", "public_key": "aBQG8RQAzjs1eTKFEAQXr2gS4utcDiEC9wmi7pfUPTi27VCahwgw", "public_key_hex": "0330E7FC9D56BB25D6893BA3F317AE5BCF33B3291BD63DB32654A313222F7FD020" } } ``` *JSON-RPC* ``` { "result": { "account_id": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh", "key_type": "secp256k1", "master_key": "I IRE BOND BOW TRIO LAID SEAT GOAL HEN IBIS IBIS DARE", "master_seed": "snoPBrXtMeMyMHUVTgbuqAfg1SUTb", "master_seed_hex": "DEDCE9CE67B451D852FD4E846FCDE31C", "public_key": "aBQG8RQAzjs1eTKFEAQXr2gS4utcDiEC9wmi7pfUPTi27VCahwgw", "public_key_hex": "0330E7FC9D56BB25D6893BA3F317AE5BCF33B3291BD63DB32654A313222F7FD020", "status": "success" } } ``` *Commandline* ``` Loading: "/etc/rippled.cfg" Connecting to 127.0.0.1:5005 { "result" : { "account_id" : "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh", "key_type" : "secp256k1", "master_key" : "I IRE BOND BOW TRIO LAID SEAT GOAL HEN IBIS IBIS DARE", "master_seed" : "snoPBrXtMeMyMHUVTgbuqAfg1SUTb", "master_seed_hex" : "DEDCE9CE67B451D852FD4E846FCDE31C", "public_key" : "aBQG8RQAzjs1eTKFEAQXr2gS4utcDiEC9wmi7pfUPTi27VCahwgw", "public_key_hex" : "0330E7FC9D56BB25D6893BA3F317AE5BCF33B3291BD63DB32654A313222F7FD020", "status" : "success" } } ``` The response follows the [standard format](#response-formatting), with a successful result containing various important information about the new account, including the following fields: | `Field` | Type | Description | |:------------------|:-------|:------------------------------------------------| | `master_seed` | String | The master seed from which all other information about this account is derived, in Ripple's [base58][] encoded string format. This is the private key of the key pair. | | `master_seed_hex` | String | The master seed, in hex format. | | `master_key` | String | The master seed, in [RFC 1751](http://tools.ietf.org/html/rfc1751) format. | | `account_id` | String | The [Address][] of the account. | | `public_key` | String | The public key of the account, in encoded string format. | | `public_key_hex` | String | The public key of the account, in hex format. | | `warning` | String | (May be omitted) If the request specified a seed value, this field provides a warning that it may be insecure. [New in: rippled 0.32.0][] | The key generated by this method can also be used as a regular key for an account if you use the [SetRegularKey transaction type](reference-transaction-format.html#setregularkey) to do so. #### Possible Errors * Any of the [universal error types](#universal-errors). * `invalidParams` - One or more fields are specified incorrectly. * `badSeed` - The request specified a disallowed seed value (in the `passphrase`, `seed`, or `seed_hex` fields), such as an empty string, or a string resembling a XRP Ledger address.