Para desarrolladores / SENDIT
SENDIT para desarrolladores
SENDIT es un conjunto de contratos en Pickle Chain alrededor de un banco, más dos API de lectura. Todo lo que hace un trader es una transacción que usted puede enviar por sí mismo, desde una billetera o desde una clave de trading registrada.
Las piezas
- SenditBank guarda el pUSD, el ETH y los tokens lanzados de cada cuenta, y sus claves de trading. Cada uno de los demás contratos es un venue que debita el banco con
pully lo acredita conpush. - El motor de perps (PepperPerps VERSION 3), su libro de órdenes para los mercados en dos pasos y los disparadores, y la bóveda de LP.
- El router spot, el cambio de pUSD y el copy trading, además del propio pUSD.
- Las API HTTP: dex-api para mercados, posiciones, saldos, el feed y los tokens; social-api para las sesiones.
- Crear un bot lo junta todo.
SENDIT funciona en la testnet pública (chain ID 78270). Su aplicación y sus API se sirven desde https://sendit.picklechain.xyz; el JSON-RPC es el de la cadena, en https://rpc.picklechain.xyz.
Leer el manifiesto
Lea las direcciones en tiempo de ejecución. Una actualización del motor despliega contratos nuevos junto a los antiguos y mueve cada clave, y en una EVM una llamada a una dirección sin código tiene éxito, así que una dirección escrita en el código que haya quedado obsoleta falla en silencio.
const ORIGIN = "https://sendit.picklechain.xyz";
// The deployment, as the app itself reads it. Never cached (Cache-Control: no-store).
const manifest = await fetch(`${ORIGIN}/op-deployment/l2-perps.json`).then((r) => r.json());
const { bank, perps, perpOrders, perpVault, spotRouter, copyFactory, pusd, pusdExchange } = manifest;
// Or the same addresses, lower-cased and renamed, from the API:
// { engine, orders, vault, previous, bank, spotRouter, pusdExchange }
const deployment = await fetch(`${ORIGIN}/api/perp/deployment`).then((r) => r.json());Claves del manifiesto
| Clave | Tipo |
|---|---|
| perps | addressThe perps engine, PepperPerps VERSION 3. /api/perp/deployment calls it `engine`. |
| perpOrders | addressThe two-step orders book, PepperPerpOrders. `orders` in /api/perp/deployment. |
| perpVault | addressThe LP vault, PepperPerpVault (pLP). `vault` in /api/perp/deployment. |
| bank | addressSenditBank: every trader's pUSD, ETH and launched tokens, and the trading keys. |
| spotRouter | addressSenditSpotRouter: buy, sell and launch tokens with bank money. |
| copyFactory | addressCopyFactory VERSION 3: one CopyAccount per copier and leader. |
| copyAccountImpl | addressThe CopyAccount implementation every copy account clones (EIP-1167). |
| pusd | addressPickleUSD (pUSD), six decimals. The test dollar every position is margined in. |
| pusdExchange | addressSenditPusdExchange: pUSD for ETH at one dollar. |
| perpsPrevious | arrayEngines that still hold positions: [{ engine, orders, vault, block, version }]. Legacy positions there are closed by the wallet. |
| copyFactoryPrevious | arrayEarlier copy factories: [{ factory, impl, block, version, engine }]. Stop and withdraw old copies there. |
| perpsBlock, bankBlock, copyFactoryBlock, pusdExchangeBlock | numberThe block each contract was deployed in: where an indexer starts reading logs. |
| pusdWethPool, feeRecipient, keeper | addressThe pool the protocol's fee share is sold through, the FeeRouter that receives it, and the keeper's wallet. |
idBase no está en el manifiesto: lea idBase() en el motor.
Direcciones actuales
Tal como se servían el 2026-10-20. Contrástelas con el manifiesto; no las escriba en el código.
| Clave | Dirección |
|---|---|
| bank | 0x3366f560DC1539B5Db4f889CB603C3BDd369298F |
| perps | 0x57c61D24BaE12D24100ac1FB20950B88904be971VERSION 3, idBase() 10000000: position and request ids start at 10,000,001 |
| perpOrders | 0xcb62fcb714f8aa69d2b2abC8Ba9cCEF2A1E02C84 |
| perpVault | 0x20F4E42E5f56E47e6e058fA137c698C86B0aF459 |
| spotRouter | 0xD6516A4720018AFa6c777F2D686247d715EDa04B |
| copyFactory | 0xf288A5F90Ea3b07b014f52110FC4C7f82206dd95 |
| pusd | 0x47091c58e34bDC4f32A05541C1243710249Dd777 |
| pusdExchange | 0x07b5E6fd6b5A86FBE3685B434988D3b5aFB4385F |
| perpsPrevious[0].engine | 0x8452242B9d7C453556E3a9b0556e48a25ced0ef2VERSION 1, ids from 1, wallet-signed only |
Ids y motores anteriores
El motor actual numera las posiciones a partir de idBase() + 1, 10.000.001, y su libro de órdenes numera las solicitudes desde la misma base, así que un id designa una sola posición o solicitud en toda la cadena, sea cual sea el motor que la tenga. El motor anterior (VERSION 1, en perpsPrevious) numera desde 1, es anterior al banco y solo acepta firmas de billetera: las posiciones que siguen abiertas allí se cierran con su propio close desde la billetera que las abrió. dex-api marca cada fila que viene de él con legacy: true.
El manifiesto es la única fuente de verdad que usa la propia aplicación. Si falta una clave (ningún banco en una red, todavía ningún cambio), la función está desactivada allí; /api/perp/deployment omite el campo.