Skip to main content

CreateAccount

CreateAccount adds an entry to the account database. This entry represents an amount of satoshis (account balance) that can be spent using off-chain transactions (e.g. paying invoices).

Macaroons can be created to be locked to an account. This makes sure that the bearer of the macaroon can only spend at most that amount of satoshis through the daemon that has issued the macaroon.

Accounts only assert a maximum amount spendable. Having a certain account balance does not guarantee that the node has the channel liquidity to actually spend that amount.

Source: lit-accounts.proto

gRPC

rpc CreateAccount (CreateAccountRequest) returns (CreateAccountResponse);

REST

HTTP MethodPath
POST /v1/accounts

Code Samples

const fs = require('fs');
const grpc = require('@grpc/grpc-js');
const protoLoader = require('@grpc/proto-loader');

const GRPC_HOST = 'localhost:8443'
const MACAROON_PATH = 'LIT_DIR/regtest/lit.macaroon'
const TLS_PATH = 'LIT_DIR/tls.cert'

const loaderOptions = {
keepCase: true,
longs: String,
enums: String,
defaults: true,
oneofs: true,
};
const packageDefinition = protoLoader.loadSync('lit-accounts.proto', loaderOptions);
const litrpc = grpc.loadPackageDefinition(packageDefinition).litrpc;
process.env.GRPC_SSL_CIPHER_SUITES = 'HIGH+ECDSA';
const tlsCert = fs.readFileSync(TLS_PATH);
const sslCreds = grpc.credentials.createSsl(tlsCert);
const macaroon = fs.readFileSync(MACAROON_PATH).toString('hex');
const macaroonCreds = grpc.credentials.createFromMetadataGenerator(function(args, callback) {
let metadata = new grpc.Metadata();
metadata.add('macaroon', macaroon);
callback(null, metadata);
});
let creds = grpc.credentials.combineChannelCredentials(sslCreds, macaroonCreds);
let client = new litrpc.Accounts(GRPC_HOST, creds);
let request = {
account_balance: <uint64>,
expiration_date: <int64>,
label: <string>,
};
client.createAccount(request, function(err, response) {
console.log(response);
});
// Console output:
// {
// "account": <Account>,
// "macaroon": <bytes>,
// }

Messages

litrpc.CreateAccountRequest

Source: lit-accounts.proto

FieldgRPC TypeREST TypeREST Placement
account_balance
uint64stringbody
expiration_date
int64stringbody
label
stringstringbody

litrpc.CreateAccountResponse

Source: lit-accounts.proto

FieldgRPC TypeREST Type
account
Accountobject
macaroon
bytesstring

Nested Messages

litrpc.Account

FieldgRPC TypeREST Type
id
stringstring
initial_balance
uint64string
current_balance
int64string
last_update
int64string
expiration_date
int64string
invoices
AccountInvoice[]array
payments
AccountPayment[]array
label
stringstring

litrpc.AccountInvoice

FieldgRPC TypeREST Type
hash
bytesstring

litrpc.AccountPayment

FieldgRPC TypeREST Type
hash
bytesstring
state
stringstring
full_amount
int64string