MintAsset
MintAsset will attempt to mint the set of assets (async by default to ensure proper batching) specified in the request. The pending batch is returned that shows the other pending assets that are part of the next batch. This call will block until the operation succeeds (asset is staged in the batch) or fails.
Source: mintrpc/mint.proto
gRPC
rpc MintAsset (MintAssetRequest) returns (MintAssetResponse);
REST
HTTP Method | Path |
---|---|
POST | /v1/taproot-assets/assets |
Code Samples
- gRPC
- REST
- Shell
- Javascript
- Python
const fs = require('fs');
const grpc = require('@grpc/grpc-js');
const protoLoader = require('@grpc/proto-loader');
const GRPC_HOST = 'localhost:10029'
const MACAROON_PATH = 'TAPROOT-ASSETS_DIR/regtest/taproot-assets.macaroon'
const TLS_PATH = 'TAPROOT-ASSETS_DIR/tls.cert'
const loaderOptions = {
keepCase: true,
longs: String,
enums: String,
defaults: true,
oneofs: true,
};
const packageDefinition = protoLoader.loadSync('mintrpc/mint.proto', loaderOptions);
const mintrpc = grpc.loadPackageDefinition(packageDefinition).mintrpc;
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 mintrpc.Mint(GRPC_HOST, creds);
let request = {
asset: <MintAsset>,
short_response: <bool>,
};
client.mintAsset(request, function(err, response) {
console.log(response);
});
// Console output:
// {
// "pending_batch": <MintingBatch>,
// }
import codecs, grpc, os
# Generate the following 2 modules by compiling the mintrpc/mint.proto with the grpcio-tools.
# See https://github.com/lightningnetwork/lnd/blob/master/docs/grpc/python.md for instructions.
import mint_pb2 as mintrpc, mint_pb2_grpc as mintstub
GRPC_HOST = 'localhost:10029'
MACAROON_PATH = 'TAPROOT-ASSETS_DIR/regtest/taproot-assets.macaroon'
TLS_PATH = 'TAPROOT-ASSETS_DIR/tls.cert'
# create macaroon credentials
macaroon = codecs.encode(open(MACAROON_PATH, 'rb').read(), 'hex')
def metadata_callback(context, callback):
callback([('macaroon', macaroon)], None)
auth_creds = grpc.metadata_call_credentials(metadata_callback)
# create SSL credentials
os.environ['GRPC_SSL_CIPHER_SUITES'] = 'HIGH+ECDSA'
cert = open(TLS_PATH, 'rb').read()
ssl_creds = grpc.ssl_channel_credentials(cert)
# combine macaroon and SSL credentials
combined_creds = grpc.composite_channel_credentials(ssl_creds, auth_creds)
# make the request
channel = grpc.secure_channel(GRPC_HOST, combined_creds)
stub = mintstub.MintStub(channel)
request = mintrpc.MintAssetRequest(
asset=<MintAsset>,
short_response=<bool>,
)
response = stub.MintAsset(request)
print(response)
# {
# "pending_batch": <MintingBatch>,
# }
- Javascript
- Python
const fs = require('fs');
const request = require('request');
const REST_HOST = 'localhost:8089'
const MACAROON_PATH = 'TAPROOT-ASSETS_DIR/regtest/taproot-assets.macaroon'
let requestBody = {
asset: <object>, // <MintAsset>
short_response: <boolean>, // <bool>
};
let options = {
url: `https://${REST_HOST}/v1/taproot-assets/assets`,
// Work-around for self-signed certificates.
rejectUnauthorized: false,
json: true,
headers: {
'Grpc-Metadata-macaroon': fs.readFileSync(MACAROON_PATH).toString('hex'),
},
form: JSON.stringify(requestBody),
}
request.post(options, function(error, response, body) {
console.log(body);
});
// Console output:
// {
// "pending_batch": <object>, // <MintingBatch>
// }
import base64, codecs, json, requests
REST_HOST = 'localhost:8089'
MACAROON_PATH = 'TAPROOT-ASSETS_DIR/regtest/taproot-assets.macaroon'
TLS_PATH = 'TAPROOT-ASSETS_DIR/tls.cert'
url = f'https://{REST_HOST}/v1/taproot-assets/assets'
macaroon = codecs.encode(open(MACAROON_PATH, 'rb').read(), 'hex')
headers = {'Grpc-Metadata-macaroon': macaroon}
data = {
'asset': <MintAsset>,
'short_response': <bool>,
}
r = requests.post(url, headers=headers, data=json.dumps(data), verify=TLS_PATH)
print(r.json())
# {
# "pending_batch": <MintingBatch>,
# }
$ tapcli assets mint --help
NAME:
tapcli assets mint - Attempt to mint a new asset with the specified parameters
USAGE:
tapcli assets mint command [command options] [arguments...]
COMMANDS:
batches, b list all batches
fund fund a batch
finalize finalize a batch
cancel, c cancel a batch
OPTIONS:
--type value the type of asset, must either be: normal, or collectible
--name value the name/tag of the asset
--supply value the target supply of the minted asset (default: 0)
--decimal_display value the number of decimal places, asset amounts, are shift to the left converting asset integer amountsinto UI-recognizable fractional quantity (e.g. an asset with amount100 and decimal display of 2 is displayed as 1.00 in the wallet) (default: 0)
--asset_version value the version of the asset to mint (default: 0)
--meta_bytes value the raw metadata associated with the asset
--meta_file_path value a path to a file on disk that should be read and used as the asset meta
--meta_type value the type of the meta data for the asset, must be either: opaque or json (default: "opaque")
--new_grouped_asset if true, then the asset supports on going emission
--grouped_asset if true, then the asset is minted into a specific group
--group_key value the specific group key to use to mint the asset
--group_anchor value the other asset in this batch that the new asset be grouped with
--short if true, then the current assets within the batch will not be returned in the response in order to avoid printing a large amount of data in case of large batches
--help, -h show help
Messages
mintrpc.MintAssetRequest
Source: mintrpc/mint.proto
Field | gRPC Type | REST Type | REST Placement |
---|---|---|---|
asset | MintAsset | object | body |
short_response | bool | boolean | body |
mintrpc.MintAssetResponse
Source: mintrpc/mint.proto
Field | gRPC Type | REST Type |
---|---|---|
pending_batch | MintingBatch | object |
Nested Messages
mintrpc.MintAsset
Field | gRPC Type | REST Type |
---|---|---|
asset_version | AssetVersion | string |
asset_type | AssetType | string |
name | string | string |
asset_meta | AssetMeta | object |
amount | uint64 | string |
new_grouped_asset | bool | boolean |
grouped_asset | bool | boolean |
group_key | bytes | string |
group_anchor | string | string |
group_internal_key | KeyDescriptor | object |
group_tapscript_root | bytes | string |
script_key | ScriptKey | object |
decimal_display | uint32 | integer |
mintrpc.MintingBatch
Field | gRPC Type | REST Type |
---|---|---|
batch_key | bytes | string |
batch_txid | string | string |
state | BatchState | string |
assets | PendingAsset[] | array |
created_at | int64 | string |
height_hint | uint32 | integer |
batch_psbt | bytes | string |
mintrpc.PendingAsset
Field | gRPC Type | REST Type |
---|---|---|
asset_version | AssetVersion | string |
asset_type | AssetType | string |
name | string | string |
asset_meta | AssetMeta | object |
amount | uint64 | string |
new_grouped_asset | bool | boolean |
group_key | bytes | string |
group_anchor | string | string |
group_internal_key | KeyDescriptor | object |
group_tapscript_root | bytes | string |
script_key | ScriptKey | object |
taprpc.AssetMeta
Field | gRPC Type | REST Type |
---|---|---|
data | bytes | string |
type | AssetMetaType | string |
meta_hash | bytes | string |
taprpc.KeyDescriptor
Field | gRPC Type | REST Type |
---|---|---|
raw_key_bytes | bytes | string |
key_loc | KeyLocator | object |
taprpc.KeyLocator
Field | gRPC Type | REST Type |
---|---|---|
key_family | int32 | integer |
key_index | int32 | integer |
taprpc.ScriptKey
Field | gRPC Type | REST Type |
---|---|---|
pub_key | bytes | string |
key_desc | KeyDescriptor | object |
tap_tweak | bytes | string |
Enums
mintrpc.BatchState
Name | Number |
---|---|
BATCH_STATE_UNKNOWN | 0 |
BATCH_STATE_PENDING | 1 |
BATCH_STATE_FROZEN | 2 |
BATCH_STATE_COMMITTED | 3 |
BATCH_STATE_BROADCAST | 4 |
BATCH_STATE_CONFIRMED | 5 |
BATCH_STATE_FINALIZED | 6 |
BATCH_STATE_SEEDLING_CANCELLED | 7 |
BATCH_STATE_SPROUT_CANCELLED | 8 |
taprpc.AssetMetaType
Name | Number |
---|---|
META_TYPE_OPAQUE | 0 |
META_TYPE_JSON | 1 |
taprpc.AssetType
Name | Number |
---|---|
NORMAL | 0 |
COLLECTIBLE | 1 |
taprpc.AssetVersion
Name | Number |
---|---|
ASSET_VERSION_V0 | 0 |
ASSET_VERSION_V1 | 1 |