Run Tradelink as an Administrator
How to Build Your Off-Exchange Trading Network
Get onboarded to Ledger Enterprise v.5.0 or higher versions to access Ledger Tradelink (TL) module (contact our Client Success and Technical Account Managers to get onboarded).
When accessing Ledger Enterprise v.5.0 or higher versions, the Ledger Tradelink module will be available at the top left hand menu. Monitor Accounts
Monitor Accounts
Ledger Tradelink module will be available on the left hand menu of the Vault main page.
When selecting the Ledger Tradelink option, a dashboard will be displayed to the users (administrators). The dashboard will allow operator users to see available and pledged balances of the accounts and to control in one place all the collateral account statuses and active operator users for those accounts.
Connect Your Network
At the bottom of the screen, users (administrators) can select one or multiple organizations they would like to add to their Tradelink network. If an organization the users try to add is not yet connected to the Tradelink API service, the users will be taken to a request page where they can enter the necessary information to share with the external party (level of interest, expected level of business, etc.) so they can join the Tradelink network: Ledger Enterprise TRADELINK.
Note: To start with Tradelink at least 1 exchange and 1 asset manager must be set up as an API/UI operator and as a group on the platform, more on this in the following section.
Setup Network Roles
Once the network participants are confirmed, a user (administrator) will need to define the role that each participant will have on the network. As mentioned, in the current version, the Tradelink module recognizes three roles: Asset Manager, Custodian, and Exchange (defined in the Introduction session).
For each role, a group of operators (* UI or API operators) will need to be defined on the platform in addition to their respective whitelisted addresses.
Each group will be added to the Tradelink collateral account ruleset to define their rights and responsibilities in the network based on their roles.
For each group, at least one (1) API Operator will need to exist to interact with the current version of Tradelink (* v.5.0) to fetch Tradelink data (GET) and create/approve requests (POST):
1 API Operator - Asset Manager 1 API Operator - Custodian 1 API Operator - Exchange
- Instructions on how to register an API operator → here
- Instructions on how to create a group → here
- Instructions on how to create a whitelist → here
In the first version of Ledger Enterprise v.5.0 collateral pledging will only be available via API. Pledging via UI will only be available as part of upcoming releases.
Create Collateral Account
Now the Custodian administrator can proceed to create a Tradelink collateral account.
At this stage, previously defined groups must be assigned to the roles (Asset Manager = Pledge Creator, Exchange = Settlement Creator).
Once the roles are defined, the administrator will need to confirm each of the 4 following rules that relate to the request types that will be offered on the Tradelink service:
- Pledging Rules
- Settlement Rules
- Withdrawal Rules
- Arbitration Rules
Those rules will be pre-populated with the creator’s and approver’s rights based on the groups selected during the initial assignment of group roles (AM, CU, EX).
No additional configuration on governance rules is required except for the Settlement rule.
Settlement Pre-Approval Rule
The Settlement rule offers the option of adding a “pre-approval” step for the Asset Manager, and this will need to be enabled during the setup process if needed. This is optional and set to be disabled by default, if required it will need to be toggled on.
This option allows the Asset Manager (authorized group) to pre-approve a settlement request before the Custodian gives the final approval. There are several conditions where this could be required, for example:
- Custodian Risk Reduction: a custodian might wants to ensure an Asset Manager has reviewed and agreed to the terms of the settlement request before giving final approval.
- Exchange Risk Reduction: an exchange might want to have a pre-approval from the Asset Manager before broadcasting a settlement transaction. This will not guarantee final approval from the custodian but will give confidence to the Exchange that in the approval flow the Asset Manager already agreed on the term of settlement and provided first approval, and now the risk is limited to the custodian approval.
Once the Custodian administrators has carefully reviewed each rule definition, they can proceed to confirm and approve the Collateral Account/Account rules’ creation request on their PSD.
This will follow the standard governance rules acceptance procedure on the Ledger Enterprise Solution.
Once approved by the administrator quorum via their PSDs, the rules defined will be enforced by Ledger Enterprise HSM.
The rules of engagement are technically enforced by hardware on Ledger Enterprise 🔐.
Workflow for Available Actions
Below is a summary of the workflow for each request type, user (AM = Asset Manager, CU = Custodian, XC = Exchange) and, actions available on the solution:
Pledging:
- AM creates a Pledge Increment/Decrement request
- AM approves creation Pledge Increment/Decrement request
- XC approves Pledge request
Settlement:
- XC creates Settlements request
- XC approves creations of Settlements request
- AM pre-approves Settlements request (optional)
- CU approves Settlements request
Withdrawal:
- AM create Withdrawal request
- AM approves creation Withdrawal request
- CU approves Withdrawal request
Arbitration:
- CU create Arbitration request
- CU approves creation Arbitration request
- CU approves Arbitration request ( not part of 5.0, to be included in future release )
(* Please note that roles are defined by the collateral agent running Ledger Enterprise solution during the setup of the collateral account rules as described above.)
Below is a summary of the main endpoints and API messages format for Create/Approve a request (Pledging, Settlement, Withdrawal, Arbitration):
Create
-
Create Pledge Increment/Decrement Request
:
POST {{base_url}}/requests Content-Type: application/json X-Ledger-Workspace: {{workspace}} Authorization: Bearer {{access_token}}
{ "type": "CREATE_PLEDGE_INCREMENT", "data": { "pledge_account_id": 1, "pledge_data": { "amount": "200000000000000", "currency": "ethereum_sepolia", "account_name": "TL-0001-ETH-OOF-KOM", "exchange_name": "Crypto.com" } } }
- A positive amount means an increment, so we expect to pledge funds (locking funds, from the available balance of the collateral account to the pledge)
- A negative amount means a decrement, so we expect to unpledge funds (unlocking funds, from the pledge to the available balance of the collateral account)
-
Create Settlement Request
:
POST {{base_url}}/settlements Content-Type: application/json X-Ledger-Workspace: {{workspace}} Authorization: Bearer {{access_token}}
{ "id": "36a45ef2-0e08-4ff5-bef5-9569c1863388", "inbound_transaction_intents": [ { "amount": "12000", "to_address": "tb1qhx0mksx6ce79yjsd2an4hxmw98kwxl8munzhzr", "to_account_id": 2 } ], "outbound_transaction_intents": [ { "from_pledge_id": "{{pledge_id}}", "data": { "account_id": 1, "transaction_type": "ETHEREUM_LIKE_SEND", "transaction_data": { "currency": "ethereum_sepolia", "account_name": "TL-0001-ETH-OOF-KOM", "recipient": "0xb550388547691a526190d60C30C2f9E2af03fF3D", "amount": "90000000000", "max_fees": "{{fees}}" }, "fees_strategy": { "type": "SPEED", "data": { "speed": "FAST" } } } } ], "meta": {} }
- Create Withdrawal Request : when connected as AM (UI or API), create a conventional transaction targeting one of AM addresses in his whitelist;
- Create Arbitration Request : when connected as CU (UI or API), create a conventional transaction targeting one of the right Exchange addresses in their respective whitelist
Approve Requests
All the approvals will follow the LE API Approval Request standard defined here.
The request creation response provides the request_id on the response attribute id. Approvals requires the id of the request_id.
Get a challenge to sign and approve a request id.
GET {{base_url}}/requests/{{request_id}}/challenge
Content-Type: application/json
X-Ledger-Workspace: {{workspace}}
Authorization: Bearer {{access_token}}
Challenge should be signed by the user and posted via:
POST {{base_url}}/requests/{{request_id}}/approve
The list of Approval events is:
- *Approve Creation Pledge Request*
-
*Approve
Pledge
request*
- *Approve Creation Settlement Request*
-
*Approve
Settlement
request*
- *Approve Creation Withdrawal Request*
-
*Approve
Withdrawal
request*
- *Approve Creation Arbitration Request*
- *Approve Arbitration request*
Later in the article we are following with a detailed description of each event based on each role.