Publication
Partagez vos connaissances.
Créez un tableau de bord Walrus
J'ai trouvé le message sur https://x.com/Reset_sui/status/1944003777457271197
A créé un tableau de bord Walrus montrant : -Coûts de stockage/écriture par époque/jour/an (Go/To) -Revenus quotidiens et annuels et paiements des nœuds de stockage -Conversions en USD à comparer avec d'autres fournisseurs
Lien : http://walytics.wal.app
Link
- Sui
Réponses
2J'utilise le SDK TypeScript (@mysten /walrus) sur testnet et je rencontre cette erreur lorsque j'essaie de télécharger un fichier avec writeBlob () :
NotEnoughBlobConfirmationsError: Too many failures while writing blob H1JLtHA4... to nodes
Je me demande simplement si les nœuds de stockage du réseau de test sont en panne ou défectueux en ce moment ? ou est-ce que je rate quelque chose de stupide de mon côté ?
✅ Modèle de démarrage prêt pour GitHub : tableau de bord Walrus
Pile technologique :
- React + Vite (plus rapide que CRA)
- CSS Tailwind pour le style
@mysten/sui.js
pour Sui RPC et portefeuille- Recharts pour les graphiques
- Zustand pour la gestion de l'État
Structure des dossiers :
walrus-dashboard/
├── public/
├── src/
│ ├── components/
│ │ ├── WalletConnect.tsx
│ │ ├── ProtocolStats.tsx
│ │ ├── MyPositions.tsx
│ │ └── Chart.tsx
│ ├── state/
│ │ └── useSuiStore.ts
│ ├── App.tsx
│ └── main.tsx
├── index.html
├── tailwind.config.js
└── vite.config.ts
1.WalletConnect.tsx
import { useWallet } from '@mysten/wallet-kit';
export default function WalletConnect() {
const { connect, disconnect, connected, currentAccount } = useWallet();
return (
<div className="p-4">
{connected ? (
<div>
<p>Connected: {currentAccount?.address.slice(0, 10)}...</p>
<button onClick={disconnect} className="bg-red-500 p-2 text-white">Disconnect</button>
</div>
) : (
<button onClick={() => connect()} className="bg-blue-500 p-2 text-white">Connect Wallet</button>
)}
</div>
);
}
###2.ProtocolStats.tsx
import { useEffect, useState } from 'react';
import { SuiClient } from '@mysten/sui.js/client';
const client = new SuiClient({ url: 'https://fullnode.testnet.sui.io' });
export default function ProtocolStats() {
const [tvl, setTvl] = useState(0);
useEffect(() => {
async function fetchTVL() {
// Replace with real on-chain object ID
const obj = await client.getObject({
id: '0x...vault_id',
options: { showContent: true }
});
const balance = parseInt(obj.data.content.fields.total_deposits);
setTvl(balance / 1e9); // assuming 9 decimals
}
fetchTVL();
}, []);
return (
<div className="bg-white shadow p-4 rounded">
<h2 className="text-xl font-semibold">Protocol TVL</h2>
<p className="text-3xl">${tvl.toLocaleString()}</p>
</div>
);
}
3.principale.tsx
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
import './index.css';
ReactDOM.createRoot(document.getElementById('root')!).render(
<React.StrictMode>
<App />
</React.StrictMode>,
);
##4.App.tsx
import WalletConnect from './components/WalletConnect';
import ProtocolStats from './components/ProtocolStats';
function App() {
return (
<div className="min-h-screen bg-gray-100 p-6">
<WalletConnect />
<div className="mt-8">
<ProtocolStats />
</div>
</div>
);
}
export default App;
##5.Configuration du vent arrière
npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p
Ensuite, mettez à jour tailwind.config.js
et index.css
en conséquence.
Prochaines fonctionnalités que vous pouvez ajouter :
- Extraire les dépôts et les prêts des utilisateurs (MyPositions.tsx)
- Ajouter un graphique TVL avec Recharts
- Ajouter des alertes de liquidation
- Simulez
sui move call
depuis le frontend en utilisantSuiClient
Connaissez-vous la réponse ?
Veuillez vous connecter et la partager.
Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.
Gagne ta part de 1000 Sui
Gagne des points de réputation et obtiens des récompenses pour avoir aidé la communauté Sui à se développer.
- Pourquoi BCS exige-t-il un ordre de champs exact pour la désérialisation alors que les structures Move ont des champs nommés ?53
- « Erreurs de vérification de sources multiples » dans les publications du module Sui Move - Résolution automatique des erreurs43
- Échec de la transaction Sui : objets réservés pour une autre transaction25
- Comment les contraintes de capacité interagissent-elles avec les champs dynamiques dans des collections hétérogènes ?05