I am working on a web application where I need to generate Ethereum addresses in PHP, how do i go about generating a random Ethereum public/private key pair in PHP?


1 Answer 1


You coud use JSON rpc to create a wallet and and set password. But PHP and geth don't go well together, it will limit your app. I recommend going directly with web3.js and javascript/jquery/node. By the way, myetherwallet is a very nice code and open-source so you could integrate as on site wallet.

For generating wallet thought JSON-RPC (pass sent over the network):

//create eth wallet supplying pass, return wallet address if created

function getethwallet($pass) {

    $url = "http://node.ip:8545";   
    $data = array(
                 "jsonrpc" => "2.0",
                 "method" => "personal_newAccount",
                 "params" => array($pass),
                 "id" => "1"

    $json_encoded_data = json_encode($data);

$ch = curl_init($url);                                                                      
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_encoded_data);                                                                  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($json_encoded_data))                                                                       

$result = json_decode(curl_exec($ch));

        $parsed = $result->result;

return $parsed;
  • 1
    this is quite unsafe Commented Jun 8, 2018 at 9:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.