# Tokens de ações da Robinhood Chain: leitura do multiplicador, detentores e atividade diária com uma API key

> Source: https://docs.blockvectra.com/pt-br/guides/stock-token-multiplier/

> Os dados são derivados de registros públicos on-chain e do estado de smart contracts. Eles têm finalidade puramente informativa e não constituem aconselhamento de investimento. Tokens de ações possuem restrições jurisdicionais.


A Robinhood Chain suporta ativos tokenizados do mundo real (RWAs), incluindo ações e fundos negociados em bolsa (ETFs) dos EUA tokenizados. Enquanto tokens ERC-20 padrão mapeiam saldos na proporção 1:1, as ações tokenizadas introduzem um multiplicador de eventos corporativos para acomodar desdobramentos de ações e ajustes de dividendos sem alterar os saldos nas carteiras.

Este guia explica como o multiplicador de tokens de ações opera, como converter saldos brutos de tokens em quantidades de ações subjacentes, como consultar `uiMultiplier` on-chain usando `eth_call` de JSON-RPC e como obter métricas diárias de detentores e atividade de transferência através da BlockVectra Data API.

Para parâmetros gerais de rede, políticas de métodos e configuração de RPC, consulte o [guia da Robinhood Chain](https://docs.blockvectra.com/en/guides/robinhood-chain/). Para referências completas de campos e modelos de consumo de Compute Units (CU) do conjunto de dados, consulte o [guia de ações tokenizadas](https://docs.blockvectra.com/en/guides/stocks/).

## O que é o multiplicador de tokens de ações

Os tokens de ações da Robinhood são tokens ERC-20 padrão (com 18 casas decimais) emitidos pela Robinhood Assets (Jersey) Limited (RHJ). Para tratar eventos corporativos, como desdobramentos de ações e dividendos reinvestidos, esses contratos implementam o **ERC-8056 (Scaled UI Amount Extension)**.

O multiplicador (`uiMultiplier`) define a razão `shares-per-token`:

* **Precisão**: `uiMultiplier()` é representado como um número de ponto fixo com 18 casas decimais, onde `1e18` equivale a `1.0`.
* **Valor inicial**: Na emissão do token, o multiplicador é inicializado em `1e18` (um token representa uma ação subjacente).
* **Eventos corporativos**: Quando ocorre um evento corporativo (como um desdobramento direto de ações ou um dividendo reinvestido), o contrato do token atualiza `uiMultiplier` e emite o evento `UIMultiplierUpdated(uint256 oldMultiplier, uint256 newMultiplier, uint256 effectiveAtTimestamp)`.

### Saldos fixos de tokens durante desdobramentos

Tokens de ações **não são tokens de rebase**. Durante eventos corporativos:

* Saldos de carteira (`balanceOf(account)`) e a emissão total do token (`totalSupply()`) **permanecem inalterados**.
* Apenas o multiplicador de escala é alterado.

Por exemplo, se uma ação subjacente realizar um desdobramento direto de 2 para 1:

* Um detentor que possui 10 tokens continua mantendo 10 tokens em `balanceOf`.
* O contrato atualiza `uiMultiplier` de `1.0` (`1e18`) para `2.0` (`2e18`).
* Cada token passa a representar 2 ações subjacentes, garantindo ao detentor uma exposição efetiva de 20 ações.

### Convertendo saldos em contagem de ações

Para calcular o número de ações subjacentes representadas por um saldo de tokens, use a fórmula do ERC-8056:

```text
underlying shares = raw token amount × uiMultiplier ÷ 1e18
```

Os contratos de tokens ERC-8056 também expõem funções auxiliares somente leitura on-chain:

* `balanceOfUI(address account)`: Retorna diretamente o saldo da conta expresso em ações subjacentes (escalado por `uiMultiplier`, 18 casas decimais).
* `totalSupplyUI()`: Retorna diretamente o fornecimento total de tokens expresso em ações subjacentes.

Além disso, as transferências de tokens emitem o evento `TransferWithScaledUI(address indexed from, address indexed to, uint256 value, uint256 uiValue)`, registrando tanto a quantidade bruta de tokens quanto a contagem escalada de ações subjacentes.

### Multiplicador e feeds de preço de oráculos

A Robinhood Chain implanta um feed de preços Chainlink dedicado (`AggregatorV3Interface`) para cada token de ação:

* O feed de preços Chainlink (`latestRoundData()`) **já incorpora o multiplicador**. Ele reflete o preço integral de mercado de um token (preço da ação subjacente multiplicado pelo multiplicador).
* Aplicações que leem o oráculo on-chain Chainlink recebem o preço ajustado pelo multiplicador diretamente e **não devem** aplicar o multiplicador uma segunda vez.
* Metadados off-chain também podem ser verificados via endpoint REST da Robinhood `GET https://api.robinhood.com/rhj/assets`, que fornece `currentMultiplier` e `pendingMultiplier`.

## Lendo o multiplicador com eth\_call de JSON-RPC

Você pode inspecionar o multiplicador de qualquer ação tokenizada diretamente pelo endpoint JSON-RPC da BlockVectra para a Robinhood Chain usando `eth_call`.

* **Função**: `uiMultiplier()`
* **Seletor de função de 4 bytes**: `0xa60bf13d` (`bytes4(keccak256("uiMultiplier()"))`)
* **Formato de retorno**: `uint256` codificado em hexadecimal de 32 bytes (valor de ponto fixo com 18 casas decimais)

A BlockVectra atende requisições JSON-RPC da Robinhood Chain em `https://api.blockvectra.com/v1/robinhood_mainnet`. Passe sua API key pelo cabeçalho `x-api-key` ou anexe-a ao caminho (`https://api.blockvectra.com/v1/robinhood_mainnet/{api_key}`).

### Exemplos de código

Os exemplos abaixo consultam `uiMultiplier()` no contrato do token de ação Everpure (`0x1Cdad396DB64BDa184d5182A97Dd9B3C62100b7D`):

**cURL**

```bash
curl -s "https://api.blockvectra.com/v1/robinhood_mainnet" \
  -H "Content-Type: application/json" \
  -H "x-api-key: $BLOCKVECTRA_API_KEY" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "eth_call",
    "params": [
      {
        "to": "0x1Cdad396DB64BDa184d5182A97Dd9B3C62100b7D",
        "data": "0xa60bf13d"
      },
      "latest"
    ]
  }'
```


  **viem (TypeScript)**

```ts
import { createPublicClient, defineChain, http, parseAbi } from "viem";

const robinhoodMainnet = defineChain({
  id: 4663,
  name: "Robinhood Chain",
  nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
  rpcUrls: {
    default: { http: ["https://api.blockvectra.com/v1/robinhood_mainnet"] },
  },
});

const client = createPublicClient({
  chain: robinhoodMainnet,
  transport: http("https://api.blockvectra.com/v1/robinhood_mainnet", {
    fetchOptions: {
      headers: { "x-api-key": process.env.BLOCKVECTRA_API_KEY! },
    },
  }),
});

const stockTokenAbi = parseAbi([
  "function uiMultiplier() external view returns (uint256)",
  "function balanceOfUI(address account) external view returns (uint256)",
  "function balanceOf(address account) external view returns (uint256)",
]);

const tokenAddress = "0x1Cdad396DB64BDa184d5182A97Dd9B3C62100b7D";

// 1. Read the corporate-action multiplier (18 decimals, 1e18 = 1.0)
const multiplier = await client.readContract({
  address: tokenAddress,
  abi: stockTokenAbi,
  functionName: "uiMultiplier",
});

console.log("uiMultiplier (raw uint256):", multiplier.toString());

// 2. Read raw balance and convert to underlying shares
const holderAddress = "0x0000000000000000000000000000000000000001";
const rawBalance = await client.readContract({
  address: tokenAddress,
  abi: stockTokenAbi,
  functionName: "balanceOf",
  args: [holderAddress],
});

const underlyingShares = (rawBalance * multiplier) / 10n ** 18n;
console.log("Calculated underlying shares:", underlyingShares.toString());

// 3. Or read pre-scaled shares directly using balanceOfUI
const directShares = await client.readContract({
  address: tokenAddress,
  abi: stockTokenAbi,
  functionName: "balanceOfUI",
  args: [holderAddress],
});
console.log("Direct balanceOfUI shares:", directShares.toString());
```


## Consultando detentores e atividade diária com a Data API

A BlockVectra Data API fornece resumos diários pré-indexados para ações tokenizadas. Use `GET /v1/data/robinhood_mainnet/stocks` para a classificação de atividade diária e `GET /v1/data/robinhood_mainnet/stocks/{token}` para metadados de um token e até 30 dias de métricas diárias. Para parâmetros de requisição, campos de resposta e exemplos, consulte o [guia de ações tokenizadas](https://docs.blockvectra.com/en/guides/stocks/).

## Notas regulatórias

Os tokens de ações são títulos de dívida tokenizados emitidos pela Robinhood Assets (Jersey) Limited (RHJ). Consulte a [documentação RHJ da Robinhood](https://docs.robinhood.com/rhj) para prospectos, termos finais e avisos jurisdicionais.

## Próximos passos

* [Explore o diretório de conjuntos de dados](https://blockvectra.com/en/data/) para ver todos os conjuntos de dados indexados pela BlockVectra.
* [Consulte o plano gratuito e os preços](https://blockvectra.com/en/pricing/#free) para verificar o que sua conta inclui.
* [Entre no console](https://console.blockvectra.com/login/?next=%2Fkeys%2F) para criar uma API key.
