Skip to main content

SendAsset

SendAsset uses one or multiple passed Taproot Asset address(es) to attempt to complete an asset send. The method returns information w.r.t the on chain send, as well as the proof file information the receiver needs to fully receive the asset.

Source: taprootassets.proto

gRPC

rpc SendAsset (SendAssetRequest) returns (SendAssetResponse);

REST

HTTP MethodPath
POST /v1/taproot-assets/send

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 = '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('taprootassets.proto', loaderOptions);
const taprpc = grpc.loadPackageDefinition(packageDefinition).taprpc;
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 taprpc.TaprootAssets(GRPC_HOST, creds);
let request = {
tap_addrs: <string>,
fee_rate: <uint32>,
};
client.sendAsset(request, function(err, response) {
console.log(response);
});
// Console output:
// {
// "transfer": <AssetTransfer>,
// }

Messages

taprpc.SendAssetRequest

Source: taprootassets.proto

FieldgRPC TypeREST TypeREST Placement
tap_addrs
string[]arraybody
fee_rate
uint32integerbody

taprpc.SendAssetResponse

Source: taprootassets.proto

FieldgRPC TypeREST Type
transfer
AssetTransferobject

Nested Messages

taprpc.AssetTransfer

FieldgRPC TypeREST Type
transfer_timestamp
int64string
anchor_tx_hash
bytesstring
anchor_tx_height_hint
uint32integer
anchor_tx_chain_fees
int64string
inputs
TransferInput[]array
outputs
TransferOutput[]array
anchor_tx_block_hash
ChainHashobject

taprpc.ChainHash

FieldgRPC TypeREST Type
hash
bytesstring
hash_str
stringstring

taprpc.TransferInput

FieldgRPC TypeREST Type
anchor_point
stringstring
asset_id
bytesstring
script_key
bytesstring
amount
uint64string

taprpc.TransferOutput

FieldgRPC TypeREST Type
anchor
TransferOutputAnchorobject
script_key
bytesstring
script_key_is_local
boolboolean
amount
uint64string
new_proof_blob
bytesstring
split_commit_root_hash
bytesstring
output_type
OutputTypestring
asset_version
AssetVersionstring
lock_time
uint64string
relative_lock_time
uint64string
proof_delivery_status
ProofDeliveryStatusstring

taprpc.TransferOutputAnchor

FieldgRPC TypeREST Type
outpoint
stringstring
value
int64string
internal_key
bytesstring
taproot_asset_root
bytesstring
merkle_root
bytesstring
tapscript_sibling
bytesstring
num_passive_assets
uint32integer

Enums

taprpc.AssetVersion

NameNumber
ASSET_VERSION_V0
0
ASSET_VERSION_V1
1

taprpc.OutputType

NameNumber
OUTPUT_TYPE_SIMPLE
0
OUTPUT_TYPE_SPLIT_ROOT
1

taprpc.ProofDeliveryStatus

NameNumber
PROOF_DELIVERY_STATUS_NOT_APPLICABLE
0
PROOF_DELIVERY_STATUS_COMPLETE
1
PROOF_DELIVERY_STATUS_PENDING
2