---
# System prepended metadata

title: VSC Asset Mapping

---

# VSC Asset Mapping


### Components

- Chain Key (vTSS)
- Asset Registry defined by [here](/lJf_WHQ7Q9qNWe7ndhch9w)


### State 

2.0 **Config**

2.0.1 `chain_bridge_contract` -> contractId[string]
2.0.2 `chain_key`             -> signingKey[secp256k1]
2.0.3 `asset_registry`        -> contractId[string]
2.0.4 `base_fee`              -> uint256

2.1 **System** 

2.1.1 `active_supply` -> `uint256` *total supply of VSC asset on the network*
2.1.2 


2.2 **NAM** - *Native asset mapping*

2.2.1 `balances` -> map[string]uint256
2.2.2 `observed_txs` -> map[string]bool
2.2.2 `utxos` -> map[string]{address string, amount uint64}
2.2.3 `utxo_spends` -> map[string]signedUtxo

```golang=
type SignedUtxo struct {
	Inputs []any
	Witness any
} //Hashes to signable data
```




2.3 **AMR** - *Address mapping registry*

2.3.1 `accounts` -> `map[string]map[blockchainId]AccountInfo`

```golang=
type AccountInfo struct {
	modified_at uint64
	address Caip10Address
}
```


### Functions

3.1.1 `map` &rarr; *Arguments: [deposit proof] Receives deposit information with instructions, and maps equivalent token amount to wallet address*

3.1.2 `unmap` &rarr; *Arguments: [to, from, amount] Unmaps token and sends equivalent tokens to the L1 address*

3.1.3 `transfer` &rarr; *Arguments [to, from, amount, memo]*

3.1.4 `burn` &rarr; *Burns tokens from an account*


3.2 **Safety Interface**

3.2.1 `si_withdraw` - *converts mapped assets into L1 unmapped asset*

3.2.2 `si_hive_rate` - *the conversion rate between mapped token and Hive*

3.3 **Token Interface**

3.3.1 `decimals` &rarr; <code>func() uint256</code>


3.4 **UTXO Chains**

3.4.1 `index_utxo` &rarr; `func(any)`

3.4.2 `register_addr` &rarr; `func(script []byte)` *Registers a deposit address with valid namespace data and destination information. Note: this will usually get triggerd when profile registration happens*