const crypto = require('crypto');
const axios = require('axios');
// testnet
var hostname = "https://testnetrest.metacoin.network:20923";
// mainnet
// hostname = "https://rest.metacoin.network:20923";
function create_address() {
return new Promise((resolve, reject) => {
crypto.generateKeyPair("ec", {
namedCurve: "secp384r1", // prime256v1, secp384r1, secp521r1
publicKeyEncoding: {
type: 'spki',
format: 'pem'
},
privateKeyEncoding: {
type: 'pkcs8',
format: 'pem'
}
}, (err, public_key, private_key) => {
if (err != null) {
return reject(err.message);
}
axios.post(hostname + '/address', {
'publickey': public_key
})
.then(function (response) {
if (response.status != 200) {
return Promise.reject("MTC server response errror");
} else {
return Promise.resolve(response.data);
}
})
.then(function (mtc_address) {
return resolve({ "Address": mtc_address, "publicKey": public_key, "PrivateKey": private_key });
})
.catch(function (error) {
return reject(error);
});
});
});
}
create_address()
.then((v) => {
console.log('Metacoin Address', v.Address);
console.log('Public Key', v.publicKey);
console.log('Private Key', v.PrivateKey);
})
.catch((err) => {
console.log(err);
});