# Frontend & Backend & Smart Contract Integration Process and Functionalities Testing

## Frontend & Backend Integration Verification

<details>

<summary><strong>Sign in to Account</strong></summary>

After the user has pressed the connect wallet button and signed the wallet ownership verification message, frontend will send a signin request to backend using the `SignIn` API

### POST - SignIn (Status Code)

<figure><img src="/files/vK74dhTw9vyMyLBKLesO" alt=""><figcaption></figcaption></figure>

The `200 status code` shows the api is being called and responded successfully

### POST - SignIn (Request params)

<figure><img src="/files/N3V1PG0j38O70lCxYWoE" alt=""><figcaption></figcaption></figure>

The request param is aligned with the required request param from the backend API

<figure><img src="/files/g4DsCAHIojbdTKq8yqqn" alt=""><figcaption></figcaption></figure>

### POST - SignIn (Response)

<figure><img src="/files/N4SgzvL90jjBTlahxuHU" alt=""><figcaption></figcaption></figure>

The response fields are aligned with the required response fields from the backend API

<figure><img src="/files/rYmgPS3pm8V0OlsLSuSK" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Get Spot Account Information</summary>

After the user has performed a successful sign-in, frontend will call the GET spot-account API to retrieve necessary account information related to the user account

### GET - Spot-account (Status Code)

<figure><img src="/files/gw14Ma0NgnN7bBMkvIVQ" alt=""><figcaption></figcaption></figure>

The `200 status code` shows the api is being called and responded successfully

### GET - Spot-account (Response)

<figure><img src="/files/pujLgB8Nxp6pBxm0jx31" alt=""><figcaption></figcaption></figure>

The response fields are aligned with the required response fields from the backend API

<figure><img src="/files/RZ95rtzXM5CWCDxLuGXW" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Build Deposit Transaction (Regular Deposit)</summary>

After successful signin, user can press the deposit button and select the "Regular deposit" to deposit funds when next hydra open event occurs. After inputting the deposit amount per asset, the user can press confirm to build the deposit transaction. User's wallet signature is required to authorized the deposit transaction. Smart contract is being integrated in this action as well (Please see the smart contract integration part below for more information).

### POST - /accounts/deposit/build (Status Code)

<figure><img src="/files/moQbBF71uH78CwIvbLPX" alt=""><figcaption></figcaption></figure>

The `200 status code` shows the api is being called and responded successfully

### POST - /accounts/deposit/build (Request params)

<figure><img src="/files/feGL7FONZ002ke0WrIQ6" alt=""><figcaption></figcaption></figure>

The request param is aligned with the required request param from the backend API

<figure><img src="/files/t10UK0acstRXIWYz4jfT" alt=""><figcaption></figcaption></figure>

### POST - /accounts/deposit/build (Response)

<figure><img src="/files/iX13gYHJ2mFz5cgpc5xZ" alt=""><figcaption></figcaption></figure>

The response fields are aligned with the required response fields from the backend API

<figure><img src="/files/WSF0DIV8oplIpyKGQE7o" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Submit Deposit Transaction (Regular Deposit)</summary>

Continuing from the Build Deposit Transaction, frontend will submit the user-signed deposit transaction to the Cardano blockchain. The transaction must have been previously built using the /accounts/deposit/build endpoint and signed with the user's wallet

### POST - /accounts/deposit/submit (Status Code)

<figure><img src="/files/UMdkooRS6sfzGYcLm7JZ" alt=""><figcaption></figcaption></figure>

The `200 status code` shows the api is being called and responded successfully

### POST - /accounts/deposit/submit (Request params)

<figure><img src="/files/nwpfej6sQc6scNFr0JIk" alt=""><figcaption></figcaption></figure>

The request param is aligned with the required request param from the backend API

<figure><img src="/files/bf12WG5E6c4Dh3gCgomi" alt=""><figcaption></figcaption></figure>

### POST - /accounts/deposit/submit (Response)

<figure><img src="/files/ebe4J6IT5sW0AhWB2PS0" alt=""><figcaption></figcaption></figure>

The response fields are aligned with the required response fields from the backend API

<figure><img src="/files/Tz1NNXnAlDXkPtTzgTXg" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Build Transferral Transaction (Fast Deposit)</summary>

After successful signin, user can press the deposit button and select the "Fast Deposit" to deposit funds shortly with aid of an operator. After inputting the deposit amount per asset, the user can press confirm to build the deposit transaction.

### POST - /accounts/transferal/build (Status Code)

<figure><img src="/files/4uW71EEyBTUdErg4CSvZ" alt=""><figcaption></figcaption></figure>

The `200 status code` shows the api is being called and responded successfully

### POST - /accounts/transferal/build (Request params)

<figure><img src="/files/oa3rT2ITE6qWkniZPnGL" alt=""><figcaption></figcaption></figure>

The request param is aligned with the required request param from the backend API

<figure><img src="/files/hJRqzKmmdJRtaI1uld8W" alt=""><figcaption></figcaption></figure>

### POST - /accounts/transferal/build (Response)

<figure><img src="/files/3YXeWO1x81eBXXuKGKTT" alt=""><figcaption></figcaption></figure>

The response fields are aligned with the required response fields from the backend API

<figure><img src="/files/c4upYSDJADpAP7VBB4Gt" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Build Request Transferral Transaction (Fast Withdrawal)</summary>

After successful signin, user can press the deposit button and select the "Fast Withdrawal" to withdrawfunds shortly with aid of an operator. After inputting the withdraw amount per asset, the user can press confirm to build the deposit transaction.

### POST - /accounts/request-transferal/build (Status Code)

<figure><img src="/files/5TSsl65XqJPN71JNWNhy" alt=""><figcaption></figcaption></figure>

The `200 status code` shows the api is being called and responded successfully

### POST - /accounts/transferal/build (Request params)

<figure><img src="/files/Ob9h0HCtV7VxYknCkUGx" alt=""><figcaption></figcaption></figure>

The request param is aligned with the required request param from the backend API

<figure><img src="/files/2xEIft4oMgmUzcSbj6z4" alt=""><figcaption></figcaption></figure>

### POST - /accounts/transferal/build (Response)

<figure><img src="/files/TCAjmFoITfMjiH91DUmz" alt=""><figcaption></figcaption></figure>

The response fields are aligned with the required response fields from the backend API

<figure><img src="/files/HLmF397IIwxxRjPRzojV" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Submit Request Transferral Transaction (Fast Withdrawal)</summary>

Continuing from the Build Request Transferral Transaction, the frontend submits a user-signed request transferal transaction to the Cardano blockchain.&#x20;

### POST - /accounts/request-transferal/submit (Status Code)

<figure><img src="/files/2ze2Z5Co7OdB4H4Ka6nk" alt=""><figcaption></figcaption></figure>

The `200 status code` shows the api is being called and responded successfully

### POST - /accounts/transferal/submit (Request params)

<figure><img src="/files/aQOVCCqPTxklVhFGuoce" alt=""><figcaption></figcaption></figure>

The request param is aligned with the required request param from the backend API

<figure><img src="/files/uFTedg8IeSMOzHY98Ftn" alt=""><figcaption></figcaption></figure>

### POST - /accounts/transferal/submit (Response)

<figure><img src="/files/lbRaU8UooeUkfoDIWiMO" alt=""><figcaption></figcaption></figure>

The response fields are aligned with the required response fields from the backend API

<figure><img src="/files/QD3TsnvYwCduz7EvMXcj" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Get Deposit Records</summary>

After successful signin, user can visit the dashboard page to view the regular deposit records. Frontend will call the GET deposit-records API to retrieve the regular deposit records by the user.

### GET - Deposit-records (Status Code)

<figure><img src="/files/KgSb5P5X1RqoCdycHImc" alt=""><figcaption></figcaption></figure>

The `200 status code` shows the api is being called and responded successfully

### GET - Deposit-records (Response)

<figure><img src="/files/gMZA0ddzIzjkFVBrQTZP" alt=""><figcaption></figcaption></figure>

The deposit records shown in dashboard page are aligned with the data returned by the backend API. The backend API response fields are aligned with the required response fields from the backend API

<figure><img src="/files/GaLAoNFIVH1nLV6svvjF" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Get Transferral Records (To Get Fast Deposit and Withdrawal records)</summary>

After successful signin, user can visit the dashboard page to view the fast deposit records. Frontend will call the GET transferl-records API to retrieve the fast deposit records by the user.

### GET - transferal-records (Status Code)

<figure><img src="/files/pcjoiaDmnkM9x4edlDm4" alt=""><figcaption></figcaption></figure>

The `200 status code` shows the api is being called and responded successfully

### GET - transferal-records (Response)

<figure><img src="/files/r3kVHqLrBHimzQt0ZaRs" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/lqSWU3cn63yGWkWv0TNe" alt=""><figcaption></figcaption></figure>

The transferal records shown in dashboard page are aligned with the data returned by the backend API. The backend API response fields are aligned with the required response fields from the backend API

<figure><img src="/files/UHjRkixeqm0zGPAvy5Bt" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Get Account Balance</summary>

After successful signin, user can visit the trading page to view the account's available balance. Frontend will call the GET account-balance API to retrieve the account balance by the user.

### GET - account-balance (Status Code)

<figure><img src="/files/NcBP22iJ8TfbM2dbViT9" alt=""><figcaption></figcaption></figure>

The `200 status code` shows the api is being called and responded successfully

### GET - account-balance (Response)

<figure><img src="/files/WkfcuRDIsYlzZfyvoUJV" alt=""><figcaption></figcaption></figure>

The available balance shown in trading page are aligned with the api response from backend. The response fields are aligned with the required response fields from the backend API

<figure><img src="/files/srMtGL8b9NmkuSBs8xDD" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Get Order Records (by Open Order)</summary>

After successful signin, user can visit the trading page to view the open order records. Frontend will call the GET order-records API filtered by status (openOrder) to retrieve the open order records by the user.

### GET - order-records (Status Code)

<figure><img src="/files/FvrdFuzBfBPMkX6DA0uw" alt=""><figcaption></figcaption></figure>

The `200 status code` shows the api is being called and responded successfully

### GET - order-records (Response)

<figure><img src="/files/a3IezJPdOpERea0b4jUW" alt=""><figcaption></figcaption></figure>

The open order records shown in trading page are aligned with the api response from backend. The response fields are aligned with the required response fields from the backend API

<figure><img src="/files/lzOtU4IOAcxHoo5V8hR0" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Get Order Records (by Order History)</summary>

After successful signin, user can visit the trading page to view the order history records. Frontend will call the GET order-records API filtered by status (orderHistory) to retrieve the order history records by the user.

### GET - order-records (Status Code)

<figure><img src="/files/U16PrxDic4Pl6cCznGs8" alt=""><figcaption></figcaption></figure>

The `200 status code` shows the api is being called and responded successfully

### GET - order-records (Response)

<figure><img src="/files/FJbPdyj2XRBFmgUVr9QW" alt=""><figcaption></figcaption></figure>

The order history records shown in trading page are aligned with the api response from backend. The response fields are aligned with the required response fields from the backend API

<figure><img src="/files/7z0cKF8MQQLBVwVt6PuC" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Get Order Records (by Trade History)</summary>

After successful signin, user can visit the trading page to view the trade history records. Frontend will call the GET order-records API filtered by status (tradeHistory) to retrieve the trade history records by the user.

### GET - order-records (Status Code)

<figure><img src="/files/nhj6Hss7YH9fmKertTSj" alt=""><figcaption></figcaption></figure>

The `200 status code` shows the api is being called and responded successfully

### GET - order-records (Response)

<figure><img src="/files/tJvB22jO3eutYmyUbbof" alt=""><figcaption></figcaption></figure>

The trade history records shown in trading page are aligned with the api response from backend. The response fields are aligned with the required response fields from the backend API

<figure><img src="/files/GclvXhbAZApNlAoccyJx" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Get API Key</summary>

After successful signin, user can visit the dashboard page to view the api-key. Frontend will call the GET api-key API to retrieve the api key by the user.

### GET - api-key (Status Code)

<figure><img src="/files/IXQyuguhmEICu9forHCX" alt=""><figcaption></figcaption></figure>

The `200 status code` shows the api is being called and responded successfully

### GET - api-key (Response)

<figure><img src="/files/veg8JpXcyD54H1do3KhR" alt=""><figcaption></figcaption></figure>

The api key shown in dashboard page is aligned with the api response from backend. The response fields are aligned with the required response fields from the backend API

<figure><img src="/files/fjkCEGhNqA2jQYROVGEe" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Build Place Order Transaction</summary>

After successful signin, user can visit the trading page to place order. Frontend will call the POST order/build API to construct an unsigned Cardano transaction for placing a limit or market order. The transaction must be signed by the user's operation key and then submitted using the /order/submit endpoint.

### POST - order/build (Status Code)

<figure><img src="/files/JNvVFl8keaPpkN3DXvsp" alt=""><figcaption></figcaption></figure>

The `200 status code` shows the api is being called and responded successfully

### POST - order/build (Request Parameters)

<figure><img src="/files/UBFRyVGKBMQDbwfxOL6R" alt=""><figcaption></figcaption></figure>

The request param's fields are aligned with the required request params from the backend API

<figure><img src="/files/sufcCGpCh9D2g0UhP8pg" alt=""><figcaption></figcaption></figure>

### POST - order/build (Response)

<figure><img src="/files/hK4gdnVqQ8MpoJTOEuSj" alt=""><figcaption></figcaption></figure>

The response fields are aligned with the required response fields from the backend API

<figure><img src="/files/el2hPDlNo4WW578s3f26" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Submit Place Order Transaction</summary>

Continue from the Build Place Order Transaction section, frontend submits a signed order transaction to hydra. Use this endpoint after signing the transaction hex returned from /order/build

### POST - order/submit (Status Code)

<figure><img src="/files/DXdkfSGVWrjHyJ8phdNs" alt=""><figcaption></figcaption></figure>

The `200 status code` shows the api is being called and responded successfully

### POST - order/submit (Request Parameters)

<figure><img src="/files/Vzv3PLLylPcHTArEkKfL" alt=""><figcaption></figcaption></figure>

The request param's fields are aligned with the required request params from the backend API

<figure><img src="/files/hDGF5xuGYcI0sgNRhqJg" alt=""><figcaption></figcaption></figure>

### POST - order/submit (Response)

<figure><img src="/files/egG3xACjDDYyR7waLHD1" alt=""><figcaption></figcaption></figure>

The response fields are aligned with the required response fields from the backend API

<figure><img src="/files/C6vEmtu5XfDVbD9aqOfo" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Build Cancel Order Transaction</summary>

After successful signin, user can visit the trading page to cancel order. Frontend will call the DELETE order/{id}/build API to construct an unsigned Cardano transaction for cancelling a specific order by its ID. The transaction must be signed by the user's operation key and then submitted using the /order/submit endpoint.

### DELETE - order/{id}/build (Status Code)

<figure><img src="/files/GU4tcPHMnIOfsxqlcaQh" alt=""><figcaption></figcaption></figure>

The `200 status code` shows the api is being called and responded successfully

### DELETE - order/{id}/build (Response)

<figure><img src="/files/u8BZZNoBPV7qNRLbuiqK" alt=""><figcaption></figcaption></figure>

The response field is aligned with the required response's field from the backend API

<figure><img src="/files/Y1rcQG8Or8tidGSVT8jd" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Submit Cancel Order Transaction</summary>

Continue from the Build Cancel Order Transaction section, frontend submits a signed order transaction to hydra. Use this endpoint after signing the transaction hex returned from /order/{id}/build

### DELETE - order/submit (Status Code)

<figure><img src="/files/ApFdWbLiLVaqtzLDVzWf" alt=""><figcaption></figcaption></figure>

The `200 status code` shows the api is being called and responded successfully

### DELETE - order/submit (Request params)

<figure><img src="/files/PnJDoVRvmKgWGFnxiUGF" alt=""><figcaption></figcaption></figure>

The request param's fields are aligned with the required request params from the backend API

<figure><img src="/files/wKA3A9V4oDZ2g7V88O16" alt=""><figcaption></figcaption></figure>

### DELETE - order/submit (Response)

<figure><img src="/files/AlTwGHfr7tiXgDN6Y6VI" alt=""><figcaption></figcaption></figure>

The response field is aligned with the required response's field from the backend API

<figure><img src="/files/MysYkypIZ1zLgFT18jF7" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Get Withdrawal Records</summary>

After successful signin, user can visit the dashboard page to view the regular withdrawal records. Frontend will call the GET withdrawal-records API to retrieve the regular withdrawal records by the user.

### GET - Withdrawal-records (Status Code)

<figure><img src="/files/sTIWSLqDZl91NEuDxBq0" alt=""><figcaption></figcaption></figure>

The `200 status code` shows the api is being called and responded successfully

### GET - Withdrawal-records (Response)

<figure><img src="/files/2xpLDA9dPNsGD2mglhd0" alt=""><figcaption></figcaption></figure>

The withdrawal records shown in dashboard page are aligned with the data returned by the backend API. The backend API response fields are aligned with the required response fields from the backend API

<figure><img src="/files/hqvobTZWAKdolhJ5rz21" alt=""><figcaption></figcaption></figure>

</details>

## Smart Contract Integration Verification

To validate our scripts, user would need to make a regular deposit and assess the deposit transaction according to below steps:

<details>

<summary>Step 1: Assess the datum in User's deposit transaction to start looking into the details of the relevant smart contracts</summary>

After signing and submitting the deposit transaction, user will be able to find the deposit transaction in browser wallet (e.g. eternl, vespr, etc.). User view the deposit transaction in Cardano Explorer and browse the "Reference Input" section. Click to expand the datum information for further verification in <https://cardananium.github.io/cquisitor/> (A tool supporting decode by CSL to verify all involved script information)

<figure><img src="/files/VxfIqK9PQvZBp2PPEWmC" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Step 2: Get the detailed script information in Cquisitor using the identified datum</summary>

Copy the full datum found in step 1 to <https://cardananium.github.io/cquisitor/>. Select `Decode by CSL` as the tool, `PlutusData` as the CSL type, `preprod` as network type, `BasicConversions` as Schema

<figure><img src="/files/kCjchVpnJ6QEbnsv8M7V" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Step 3: Cross check the script hashes shown in Cquisitor, Cardano Explorer, team's disclosed script transaction id and team's open-sourced smart contract</summary>

AppOracle will always be taken as the reference input in all L1 transactions to pass the validation of each script. It acts as a bridge to connect every scripts all together and shares the policyId and script address info among them. The output's field sequence shown in the JSON in cquisitor is according to team's open-source smart contract's pub type AppOracleDatum:

Visit <https://github.com/deltadefi-protocol/aiken-virtual-dex/blob/staging/lib/hydra_dex/types.ak> and locate the `pub type AppOracleDatum`:

```
pub type WithdrawalScriptHashes {
  app_deposit: ScriptHash,
  app_withdrawal: ScriptHash,
  emergency_cancel_order: ScriptHash,
}

pub type AppOracleDatum {
  operation_key: VerificationKeyHash,
  stop_key: VerificationKeyHash,
  oracle_nft: PolicyId,
  oracle_address: Address,
  app_vault_address: Address,
  app_deposit_request_token: PolicyId,
  app_deposit_request_address: Address,
  dex_account_balance_token: PolicyId,
  dex_account_balance_address: Address,
  dex_order_book_token: PolicyId,
  dex_order_book_address: Address,
  emergency_cancel_order_request_token: PolicyId, // Not used in MVP
  emergency_cancel_order_request_address: Address, // Not used in MVP
  emergency_withdrawal_request_token: PolicyId, // Not used in MVP
  emergency_withdrawal_request_address: Address, // Not used in MVP
  all_withdrawal_script_hashes: WithdrawalScriptHashes,
  hydra_info: HydraInfo,
}
```

For example, since `app_vault_address` is located as the 5th field of AppOracleDatum, it will be shown as the `4th field` in the JSON outputted by cquisitor.

For the MVP, the team has only deployed below scripts with the corresponding `transaction hashes` :

1. APPVAULT\_SPEND:   `03fadf38750b7c90902286e083924b8837c86ee96e54d82dc101a15701f5ebc1`
2. APPDEPOSITREQUEST\_MINT: `d4dc6ca99616a73edafa77602f33670a58f4fe61b76a043307efad9dba90dc5c`
3. APPDEPOSITREQUEST\_SPEND:  `f952a21d49443c13a63ea5ecf9f22fa8d16337c468fbf58e31f6f73fa2dfec9b`
4. DEXACCOUNTBALANCE\_SPEND:  `5fde15ee7dbee50dbdea46fcff34700810cee3260eb1c78a6375ae804b4c8bd4`
5. DEXORDERBOOK\_SPEND:  `3798b056eecd06f7ce900b8d332f4b236a112176aefb053d6aebc30775decb11`
6. ACCOUNTOPERATION\_APPDEPOSIT:  `f2279a6f91f2341f88e512ca56d190badfeac7e7a52812855464f03ed8662114`
7. ACCOUNTOPERATION\_APPWITHDRAWAL: `de545edb93fc67d47a7b7b5c734dcd23a46fc205b6350930ddd9e578d21f49b2`

</details>

<details>

<summary>Step 3.1: Verify the APPVAULT_SPEND script</summary>

tx id: `03fadf38750b7c90902286e083924b8837c86ee96e54d82dc101a15701f5ebc1`&#x20;

Search the trasnaction by tx id in Cardano explorer and locate the `script hash` in Outputs

<figure><img src="/files/vJ9BHp8XTlFhejOoFgtd" alt=""><figcaption></figcaption></figure>

Validated the identified script hash with the output shown in cquisitor

<figure><img src="/files/3zpDcziY0F3HRwusCCZj" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Step 3.2: Verify the APPDEPOSITREQUEST_MINT script</summary>

tx id:  `d4dc6ca99616a73edafa77602f33670a58f4fe61b76a043307efad9dba90dc5c`&#x20;

Search the trasnaction by tx id in Cardano explorer and locate the `script hash` in Outputs

<figure><img src="/files/5yQmYJJDWJXH1hHujEVT" alt=""><figcaption></figcaption></figure>

Validated the identified script hash with the output shown in cquisitor

<figure><img src="/files/jwvqbAx8fSA9iqrb0OV2" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Step 3.3: Verify the APPDEPOSITREQUEST_SPEND script</summary>

Txid: `f952a21d49443c13a63ea5ecf9f22fa8d16337c468fbf58e31f6f73fa2dfec9b`&#x20;

Search the trasnaction by tx id in Cardano explorer and locate the `script hash` in Outputs

<figure><img src="/files/ZotAUykxaY0HYMkLFnrV" alt=""><figcaption></figcaption></figure>

Validated the identified script hash with the output shown in cquisitor

<figure><img src="/files/yxw7T9hKL8cbK7pgLtSk" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Step 3.4: Verify the DEXACCOUNTBALANCE_SPEND script </summary>

Txid: `5fde15ee7dbee50dbdea46fcff34700810cee3260eb1c78a6375ae804b4c8bd4`

Search the trasnaction by tx id in Cardano explorer and locate the `script hash` in Outputs

<figure><img src="/files/jFfeGhaJbZDVd48lYDxy" alt=""><figcaption></figcaption></figure>

Validated the identified script hash with the output shown in cquisitor

<figure><img src="/files/UlBTjl8HJEPYIXX2OfN3" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Step 3.5: Verify the DEXORDERBOOK_SPEND script </summary>

Txid: `3798b056eecd06f7ce900b8d332f4b236a112176aefb053d6aebc30775decb11`

Search the trasnaction by tx id in Cardano explorer and locate the `script hash` in Outputs

<figure><img src="/files/jPMt6PN3gDdcWb0vS8Xq" alt=""><figcaption></figcaption></figure>

Validated the identified script hash with the output shown in cquisitor

<figure><img src="/files/B46LSDEpjiYgxtpehro5" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Step 3.6: Verify the ACCOUNTOPERATION_APPDEPOSIT script</summary>

Txid: `f2279a6f91f2341f88e512ca56d190badfeac7e7a52812855464f03ed8662114`

Search the trasnaction by tx id in Cardano explorer and locate the `script hash` in Outputs

<figure><img src="/files/SuQYPsne2byBdchajatS" alt=""><figcaption></figcaption></figure>

Validated the identified script hash with the output shown in cquisitor

<figure><img src="/files/oJCaVvFJZe275TM4DCrO" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Step 3.7: Verify the ACCOUNTOPERATION_APPWITHDRAWAL script</summary>

Txid: `de545edb93fc67d47a7b7b5c734dcd23a46fc205b6350930ddd9e578d21f49b2`

Search the trasnaction by tx id in Cardano explorer and locate the `script hash` in Outputs

<figure><img src="/files/ktwi5wlDCUXeablXz6jx" alt=""><figcaption></figcaption></figure>

Validated the identified script hash with the output shown in cquisitor

<figure><img src="/files/Lv6qvzQ217ngXHfElLUL" alt=""><figcaption></figcaption></figure>

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.deltadefi.io/faq/project-catalyst-f12-milestone-reporting/frontend-and-backend-integration-process-and-functionalities-testing.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
