DRS

Book entry = wallet balances

Settlement = smart contracts, atomic

Netting = not needed, RTGS

Custody = wallets

Corporate actions = smart contracts


PROBLEM

SOLUTION

Bitstream blockchain book-entry. TransferAgentModule_V5.solarrow-up-right


TECHNICAL IMPLEMENTATION

  • tokenized new issue = DTC book entry

  • wallets = DTC participant acc

  • smart contracts = DTC settlement

distributeDividends (0xbce049b7)

Distributes dividends to the account if it has holdings. The amount of shares to distribute in the form of divideds are calculated as follows: Share dividends = (account's balance * rate) / price This operation will mint or burn shares according to the rate provided. If rate > 0 it will mint shares If rate < 0 it will burn shares

accounts (address[]) date (uint256): The date of the request as a UNIX timestamp rate (int256): The rate for the given shareholder price (uint256): The NAV price per share

distributeDividends (0xd2920e5f)

Distributes full or proportional dividends to the account if it has holdings. The amount of shares to distribute in the form of divideds are calculated as follows: If the adjusted shares for the account are greather than zero, Share dividends = (adjusted shares * rate) / price Otherwise, Share dividends = (account's balance * rate) / price This operation will mint or burn shares according to the rate provided. If rate > 0 it will mint shares If rate < 0 it will burn shares

accounts (address[]) adjustedShares (uint256[]) date (uint256): The date of the request as a UNIX timestamp rate (int256): The rate for the given shareholder price (uint256): The NAV price per share

endOfDay (0x72cfff36)

Distributes dividends and settles existing requests prior to the specified date for the given account.

accounts (address[]) txIds (bytes32[]) date (uint256): The date of the request as a UNIX timestamp rate (int256): The rate price (uint256): The NAV price per share

endOfDay (0xa4152129)

Distributes full or partial dividends and settles existing requests prior to the specified date for the given account.

accounts (address[]) adjustedShares (uint256[]) txIds (bytes32[]) rate (int256): The rate price (uint256): The NAV price per share

settleTransactions (0xfd059319)

Settles existing requests prior to the specified date for the given account. This operation will mint or burn shares according to the request type.

accounts (address[]) txIds (bytes32[]) rate (int256): The rate price (uint256): The NAV price per share

settleCXTransaction (0xda9d15b6)

Settles the given cross-chain request prior to the specified date for the given account. This operation will mint or burn shares according to the request type.

account (address) the address of the shareholders' account requestId (bytes32) the id of the request to process date (uint256) the maximum date to process the request represented as a UNIX timestamp price (uint256) The NAV price per share

settleCXTransactions (0x23b2a067)

Settles all the account's request given as an array of id's prior to the specified date.

account (address) the address of the shareholders' account requestIds (bytes32[]) date (uint256) the maximum date to finish processing request from represented as a UNIX timestamp price (uint256) the NAV price per share

USER / DATA FLOWS

INVESTOR BUYS SHARES

  1. Investor submits purchase request via Transactional Module.

  2. Transactional Module checks Authorization Module for investor whitelist status.

  3. Transactional Module stores pending transaction.

  4. Admin calls Transfer Agent Module with NAV price at end of day.

  5. Transfer Agent Module reads pending transactions from Transactional Module.

  6. Transfer Agent Module calculates shares = (cash amount × scale factor) / price.

  7. Transfer Agent Module calls Fund Token to mint shares to investor.

  8. Fund Token checks Authorization Module to verify recipient is authorized.

  9. Fund Token mints shares to investor balance.

  10. Transfer Agent Module clears transaction from Transactional Module.

DAILY DIVIDEND DISTRIBUTION

  1. Admin calls Transfer Agent Module with rate and price.

  2. Transfer Agent Module checks Authorization Module to verify caller is admin.

  3. Transfer Agent Module reads investor balance from Fund Token.

  4. Transfer Agent Module calculates dividend shares = (balance × rate) / price.

  5. Transfer Agent Module calls Fund Token to mint dividend shares.

  6. Fund Token updates investor balance.

  7. Transfer Agent Module emits DividendDistributed event.

INVESTOR REDEEMS SHARES

  1. Investor submits liquidation request via Transactional Module.

  2. Transactional Module stores pending redemption.

  3. Admin calls Transfer Agent Module at end of day.

  4. Transfer Agent Module reads pending liquidation from Transactional Module.

  5. Transfer Agent Module calls Fund Token to burn shares.

  6. Fund Token reduces investor balance.

  7. Transfer Agent Module clears transaction from Transactional Module.

  8. Off chain system triggers USD wire to investor.

ACCOUNT RECOVERY (LOST KEYS)

  1. Admin calls Transfer Agent Module recoverAccount function.

  2. Transfer Agent Module checks Transactional Module for pending transactions.

  3. Transfer Agent Module calls Fund Token to transfer full balance to new address.

  4. Transfer Agent Module calls Authorization Module to deauthorize old address.

  5. Authorization Module updates whitelist.

CROSS CHAIN TRANSFER OUT

  1. Investor requests CXFER_OUT via Transactional Module.

  2. Admin calls Transfer Agent Module settleCXTransaction.

  3. Transfer Agent Module burns shares from Fund Token.

  4. Bridge system mints equivalent on destination chain.

CROSS CHAIN TRANSFER IN

  1. Bridge system records CXFER_IN in Transactional Module.

  2. Admin calls Transfer Agent Module settleCXTransaction.

  3. Transfer Agent Module mints shares on Fund Token.

  4. Investor receives shares on this chain.


RESOURCES

https://www.ici.org/viewpoints/view_18_interval_fundsarrow-up-right

https://www.ici.org/system/files/attachments/20_ppr_interval_funds.pdfarrow-up-right

https://www.dtcc.com/itp-hub/dist/downloads/Impact_of_fails_Infographic_2020.pdfarrow-up-right

Last updated