Skip to main content

NextInternalKey

NextInternalKey derives the next internal key for the given key family and stores it as an internal key in the database to make sure it is identified as a local key later on when importing proofs. While an internal key can also be used as the internal key of a script key, it is recommended to use the NextScriptKey RPC instead, to make sure the tweaked Taproot output key is also recognized as a local key.

Source: assetwalletrpc/assetwallet.proto

gRPC​

rpc NextInternalKey (NextInternalKeyRequest) returns (NextInternalKeyResponse);

REST​

HTTP MethodPath
POST /v1/taproot-assets/wallet/internal-key/next

Code Samples​

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

const GRPC_HOST = 'localhost:10029'
const MACAROON_PATH = 'TAPD_DIR/data/regtest/admin.macaroon'
const TLS_PATH = 'TAPD_DIR/tls.cert'

const loaderOptions = {
keepCase: true,
longs: String,
enums: String,
defaults: true,
oneofs: true,
};
const packageDefinition = protoLoader.loadSync('assetwalletrpc/assetwallet.proto', loaderOptions);
const assetwalletrpc = grpc.loadPackageDefinition(packageDefinition).assetwalletrpc;
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 assetwalletrpc.AssetWallet(GRPC_HOST, creds);
let request = {
key_family: <uint32>,
};
client.nextInternalKey(request, function(err, response) {
console.log(response);
});
// Console output:
// {
// "internal_key": <KeyDescriptor>,
// }

Messages​

assetwalletrpc.NextInternalKeyRequest​

Source: assetwalletrpc/assetwallet.proto

FieldgRPC TypeREST TypeREST Placement
key_family
uint32integerbody

assetwalletrpc.NextInternalKeyResponse​

Source: assetwalletrpc/assetwallet.proto

FieldgRPC TypeREST Type
internal_key
KeyDescriptorobject

Nested Messages​

taprpc.KeyDescriptor​

FieldgRPC TypeREST Type
raw_key_bytes
bytesstring
key_loc
KeyLocatorobject

taprpc.KeyLocator​

FieldgRPC TypeREST Type
key_family
int32integer
key_index
int32integer