Skip to main content

RegisterTransfer

RegisterTransfer informs the daemon about a new inbound transfer that has happened. This is used for interactive transfers where no TAP address is involved and the recipient is aware of the transfer through an out-of-band protocol but the daemon hasn't been informed about the completion of the transfer. For this to work, the proof must already be in the recipient's local universe (e.g. through the use of the universerpc.ImportProof RPC or the universe proof courier and universe sync mechanisms) and this call simply instructs the daemon to detect the transfer as an asset it owns.

Source: taprootassets.proto

gRPC

rpc RegisterTransfer (RegisterTransferRequest) returns (RegisterTransferResponse);

REST

HTTP MethodPath
POST /v1/taproot-assets/assets/transfers/register

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 = {
asset_id: <bytes>,
group_key: <bytes>,
script_key: <bytes>,
outpoint: <OutPoint>,
};
client.registerTransfer(request, function(err, response) {
console.log(response);
});
// Console output:
// {
// "registered_asset": <Asset>,
// }

Messages

taprpc.RegisterTransferRequest

Source: taprootassets.proto

FieldgRPC TypeREST TypeREST Placement
asset_id
bytesstringbody
group_key
bytesstringbody
script_key
bytesstringbody
outpoint
OutPointobjectbody

taprpc.RegisterTransferResponse

Source: taprootassets.proto

FieldgRPC TypeREST Type
registered_asset
Assetobject

Nested Messages

taprpc.AnchorInfo

FieldgRPC TypeREST Type
anchor_tx
bytesstring
anchor_block_hash
stringstring
anchor_outpoint
stringstring
internal_key
bytesstring
merkle_root
bytesstring
tapscript_sibling
bytesstring
block_height
uint32integer

taprpc.Asset

FieldgRPC TypeREST Type
version
AssetVersionstring
asset_genesis
GenesisInfoobject
amount
uint64string
lock_time
int32integer
relative_lock_time
int32integer
script_version
int32integer
script_key
bytesstring
script_key_is_local
boolboolean
asset_group
AssetGroupobject
chain_anchor
AnchorInfoobject
prev_witnesses
PrevWitness[]array
is_spent
boolboolean
lease_owner
bytesstring
lease_expiry
int64string
is_burn
boolboolean
script_key_declared_known
boolboolean
script_key_has_script_path
boolboolean
decimal_display
DecimalDisplayobject

taprpc.AssetGroup

FieldgRPC TypeREST Type
raw_group_key
bytesstring
tweaked_group_key
bytesstring
asset_witness
bytesstring
tapscript_root
bytesstring

taprpc.DecimalDisplay

FieldgRPC TypeREST Type
decimal_display
uint32integer

taprpc.GenesisInfo

FieldgRPC TypeREST Type
genesis_point
stringstring
name
stringstring
meta_hash
bytesstring
asset_id
bytesstring
asset_type
AssetTypestring
output_index
uint32integer

taprpc.OutPoint

FieldgRPC TypeREST Type
txid
bytesstring
output_index
uint32integer

taprpc.PrevInputAsset

FieldgRPC TypeREST Type
anchor_point
stringstring
asset_id
bytesstring
script_key
bytesstring
amount
uint64string

taprpc.PrevWitness

FieldgRPC TypeREST Type
prev_id
PrevInputAssetobject
tx_witness
bytes[]array
split_commitment
SplitCommitmentobject

taprpc.SplitCommitment

FieldgRPC TypeREST Type
root_asset
Assetobject

Enums

taprpc.AssetType

NameNumber
NORMAL
0
COLLECTIBLE
1

taprpc.AssetVersion

NameNumber
ASSET_VERSION_V0
0
ASSET_VERSION_V1
1