A non-transitory computer-readable medium having stored thereon a set of instructions that, when executed by a processor of a computer carries out a method of transacting cryptographic currency comprising:
- storing, by a master key loader, an operational master key in a data store of a service, wherein the service is stored the on non-transitory computer readable medium and executable by the processor;
- generating, by the service, an address and a private key;
- encrypting, by the service, the private key with the operational master key to generate an encrypted private key;
- storing, by the service, the address and the encrypted private key in association with one another prior to receiving the request for payment;
- receiving, by the service, a plurality of requests to create an application programmable interface (API) key;
- generating, by the service, upon a determination by the service that the plurality of requests to create an API key is at least equal to a minimum number (M) requests, an API key;
- storing, by the service, the API key;
- providing, by the service, an output of the API key;
- receiving, by a web application on the non-transitory computer-readable medium and executable by the processor, the API key;
- storing, by the web application, the API key;
- receiving, by the web application, a request for payment to a cryptographic currency address, the request for payment including an amount of cryptographic currency to be paid;
- generating, by the web application, an unsigned transaction in response to receiving the request for payment, the unsigned transaction including the amount of cryptographic currency to be paid in the request from payment;
- communicating, by the web application, with the service in response to receiving the request, including providing the API key stored by the web application to the service and requesting, by the web application, a signing of the unsigned transaction to create a signed transaction;
- receiving, by the service, the API key and the request for signing the transaction from the web application;
- executing, by the service, a procedure only if the API key received from the web server matches the API key stored by the service, including:
- determining, by the service, the address corresponding to the cryptographic currency address in the unsigned transaction;
- determining, by the service, the encrypted private key stored in association with the address;
- decrypting, by the service, the encrypted private key with the operational master key to generate a decrypted private key;
- and
- signing, by the service, the transaction with the decrypted private key to create the signed transaction;
- receiving, by the web application, the signed transaction;
- and
- broadcasting, by the web application, the signed transaction over a cryptographic currency network.