Getting Started
This guide targets the Arbitrum Sepolia deployment. It is split by user type because traders, redeemers, custodians, and local developers need different starting points.
Network requirements
| Item | Value |
|---|---|
| Network | Arbitrum Sepolia |
| Chain ID | 421614 |
| Hex chain ID | 0x66eee |
| Gas token | Sepolia ETH bridged to Arbitrum Sepolia |
| Stable token | Mock IDRX |
| Explorer | https://sepolia.arbiscan.io |
You need a browser wallet such as MetaMask or Rabby.
Reviewer quick path
Use this path when you only want to try the product quickly.
- Open the PulsarFi frontend.
- Connect a wallet on Arbitrum Sepolia.
- Sign the SIWE message.
- Open the contracts and faucet page in these docs.
- Click Mint 100,000 IDRX.
- Return to the app and open swap.
- Swap IDRX into a deployed pStock.
- Open portfolio and confirm the position appears.
If the selected pStock has no pool yet, the swap UI should show that the pool is unavailable. Use a token that has already been minted and listed in the market view.
Trader flow
- Connect wallet.
- Sign in with SIWE.
- Check IDRX balance.
- Pick an input and output token.
- Enter amount.
- Review expected output, slippage, and route.
- Approve input token if prompted.
- Confirm swap.
- Wait for transaction receipt.
- Review the resulting balance in portfolio.
Redemption flow
Redemption requires KYC. Without KYC, the on-chain transaction will revert with
KYCRequired.
- Contact the operator or custodian for verification.
- Custodian approves your wallet on-chain.
- Open portfolio.
- Pick the pStock position.
- Click redeem.
- Enter amount.
- Approve pStock if prompted.
- Approve IDRX fee if redeem fee is active.
- Submit redeem request.
- Wait for custodian multisig approval and execution.
Custodian flow
Custodians must use a wallet that exists in the backend custodians table and
has CUSTODIAN_ROLE on-chain.
Mint
- Connect custodian wallet.
- Sign in with SIWE.
- Open custodian console.
- Fill ticker, stock name, IDX ticker, token amount, and IDRX amount.
- Submit mint proposal.
- Wait for at least two additional custodian approvals.
- Ensure requester has enough IDRX balance.
- Ensure requester has approved IDRX to
PulsarProtocol. - Execute mint.
- Confirm stock contract address and reserve snapshot are recorded.
Redeem
- Open the request queue.
- Review redeem request details.
- Approve or reject.
- Wait for threshold.
- First approver executes approved redeem, or first rejecter executes rejection.
- Confirm backend status and reserve record.
KYC
- Verify user identity off-chain.
- Open KYC registry.
- Enter wallet address, user type, name, email, and signed statement document.
- Submit KYC approval.
- Confirm
approveKYCtransaction. - Confirm backend record status is approved.
Local development
Frontend
cd frontend
nvm use default
npm install
npm run dev
Backend
cd backend
go run main.go
Required backend environment:
DATABASE_URL=postgres://...
JWT_SECRET=...
LISTEN_ADDR=:8080
Optional backend environment for KYC document storage and email:
SUPABASE_S3_ENDPOINT=...
SUPABASE_S3_ACCESS_KEY=...
SUPABASE_S3_SECRET_KEY=...
SUPABASE_KYC_BUCKET=...
RESEND_API_KEY=...
Smart contracts
cd smart-contract
forge build
forge test
Docs
cd docs
nvm use default
npm install
npm run start
Common issues
| Symptom | Likely cause | Fix |
|---|---|---|
| Wallet cannot swap | Wrong network or no token balance. | Switch to Arbitrum Sepolia and claim IDRX. |
| Swap simulation reverts | Pool missing, slippage too tight, or allowance issue. | Pick a deployed token, adjust slippage, approve token. |
| Redeem request reverts | Wallet is not KYC-approved. | Ask custodian to approve KYC. |
| Execute mint fails | Requester is not caller or IDRX allowance is missing. | Switch to requester wallet and approve IDRX. |
| Custodian console unauthorized | Wallet is not in custodian table or JWT role is user. | Use registered custodian wallet and sign in again. |