Docs

sendAsset payload - Asset Transfers

Decode Hyperliquid `sendAsset` payloads for asset transfers, returned through Dwellir's read-only L1 gRPC API.

Read-only action reference

Dwellir's Hyperliquid gRPC API returns this decoded action payload through StreamBlocks and GetBlock. It does not submit or execute this action. Submit supported user write actions through Hyperliquid's native POST /exchange endpoint.

The decoded sendAsset payload records an asset transfer with flexible source, destination, and cross-DEX fields.

Sample Data

JSON
{
  "signature": {
    "r": "0x93eef9b0e03606c293b12d43930c38dc246777cb222b3eb296396bc46d9481b5",
    "s": "0x295978b118626247150483ce4c462680dcaa8ba4cf1f9cc779967d8503287900",
    "v": 28
  },
  "action": {
    "type": "sendAsset",
    "signatureChainId": "0x1",
    "hyperliquidChain": "Mainnet",
    "destination": "0xf2743533df9c376a09da0b9810de8c457e28aadc",
    "sourceDex": "",
    "destinationDex": "",
    "token": "USDC:0x6d1e7cde53ba9467b783cb7c530ce054",
    "amount": "4.912352",
    "fromSubAccount": "",
    "nonce": 1768146914372
  },
  "nonce": 1768146914372
}

View this transaction on Hypurrscan

Field Reference

Action Fields

FieldTypeDescription
typestringAlways "sendAsset"
destinationstringRecipient address
sourceDexbooleanSource is DEX (vs bridge)
destinationDexbooleanDestination is DEX (vs bridge)
tokenstringToken to transfer
amountstringAmount to transfer
fromSubAccountbooleanTransfer from sub-account

Use Cases

Cross-Account Transfers

Track asset movements:

Python
def process_sendAsset_action(action):
    destination = action.get('destination')
    token = action.get('token')
    amount = action.get('amount')
    print(f"Asset transfer: {amount} {token} to {destination[:10]}...")