Was macht Stx-Contract-Deployment-Hiro?
Clarity-Smart-Contract-Sammlung + Premium-SDK für die Stacks-Blockchain. Deployen, interagieren und überwachen Sie Stacks-Smart-Contracts — Wallet-Erkennung, Kontostandsabfragen, Clarity-Kodierung und vollständige Contract-Call-Unterstützung, alles in einem Paket.
GitHub · NPM — @earnwithalee/stx-contract
Was dieses Skill vermittelt
Dieses Skill deckt Folgendes ab:
- Deployen und Interagieren mit Clarity-Smart-Contracts auf Stacks Mainnet/Testnet
- Verwendung des
@earnwithalee/stx-contract-SDK für typisierte Contract-Aufrufe - Wallet-Erkennung und -Verbindung für Leather, Xverse und andere Stacks-Wallets
- Auslesen des On-Chain-Zustands — Kontostände, Transaktionen, Blockhöhe, Vertragsdaten
- Clarity-Wertkodierung in reinem JavaScript/TypeScript
- Chainhook-Einrichtung für Echtzeit-On-Chain-Event-Streaming
- Testen von Verträgen mit Clarinet vor dem Mainnet-Deployment
Empfohlene Tools
- Suche: ripgrep — schnelle Codesuche im Repository
- Deployment: Acme Deploy — Deployment auf Vercel oder in Produktion
- Formatierung: prettier — Code-Formatierung (
npm run format) - Linting: eslint — statische Analyse (
npm run lint) - Verträge: Clarinet — lokales Clarity-Testen & Deployment
- Explorer: Hiro Explorer — Überprüfen deployed Verträge on-chain
- Laufzeit: Node.js >= 18
- Blockchain: Stacks — Bitcoin-gesicherte L2
Installation
npm install @earnwithalee/stx-contract
# oder
yarn add @earnwithalee/stx-contract
# oder
pnpm add @earnwithalee/stx-contract
Schnellstart
import { StxContractClient } from '@earnwithalee/stx-contract';
const client = new StxContractClient({ network: 'mainnet' });
Wallet-Verbindung
import sdk from '@earnwithalee/stx-contract';
// Wallet verbinden (Leather / Xverse automatisch erkannt)
const address = await sdk.wallet.connectWallet();
console.log('Verbunden:', address);
// Wallet-Anbieter erkennen
const { available, provider } = sdk.wallet.detectWallet();
// Adresse zur Anzeige formatieren
const short = sdk.wallet.formatAddress(address); // "SP2F...NFBT"
On-Chain-Daten — Kontostände & Transaktionen
import sdk from '@earnwithalee/stx-contract';
// STX-Kontostand abfragen
const balance = await sdk.api.getBalance('SP2F500B8DTRK1EANJQ054BRAB8DDKN6QCMXGNFBT');
console.log('Kontostand:', balance.stx, 'STX');
// Transaktionshistorie abfragen
const txs = await sdk.api.getTransactions('SP2F500B8DTRK1EANJQ054BRAB8DDKN6QCMXGNFBT');
// Aktuelle Blockhöhe abfragen
const height = await sdk.api.getBlockHeight();
// Transaktionsstatus prüfen
const status = await sdk.api.getTransactionStatus('0xabc...');
// Eine schreibgeschützte Funktion eines Vertrags lesen
const result = await sdk.api.readContract({
contractAddress: 'SP2F500B8DTRK1EANJQ054BRAB8DDKN6QCMXGNFBT',
contractName: 'builder-rewards-v3',
functionName: 'get-total-fees-collected',
functionArgs: [],
});
Clarity-Wertkodierung
import sdk from '@earnwithalee/stx-contract';
// Verschiedene Clarity-Typen für Contract-Aufrufe kodieren
const asciiStr = sdk.encoding.encodeStringAscii('hallo');
const uint256 = sdk.encoding.encodeUint(1000000n);
const principal = sdk.encoding.encodePrincipal('SP2F500B8DTRK1EANJQ054BRAB8DDKN6QCMXGNFBT');
const boolVal = sdk.encoding.encodeBool(true);
const buff = sdk.encoding.encodeBuffer(Buffer.from('deadbeef', 'hex'));
Aufrufen einer Contract-Funktion (Schreiben)
import sdk from '@earnwithalee/stx-contract';
import { AnchorMode, PostConditionMode } from '@stacks/transactions';
const txId = await sdk.contract.callPublic({
contractAddress: 'SP2F500B8DTRK1EANJQ054BRAB8DDKN6QCMXGNFBT',
contractName: 'builder-rewards-v3',
functionName: 'register-builder',
functionArgs: [
sdk.encoding.encodePrincipal('SP2F500B8DTRK1EANJQ054BRAB8DDKN6QCMXGNFBT'),
],
anchorMode: AnchorMode.Any,
postConditionMode: PostConditionMode.Allow,
network: 'mainnet',
});
console.log('TX gesendet:', txId);
Deployen eines Clarity-Vertrags (Clarinet)
# Clarinet CLI installieren
brew install hirosystems/tap/clarinet # macOS
# oder herunterladen von https://github.com/hirosystems/clarinet/releases
# Projekt initialisieren
clarinet new my-contract && cd my-contract
# Neuen Vertrag erstellen
clarinet contract new my-token
# Prüfen und testen
clarinet check
clarinet test
# Auf Testnet deployen
clarinet deployments generate --testnet
clarinet deployments apply --testnet
# Auf Mainnet deployen
clarinet deployments generate --mainnet
clarinet deployments apply --mainnet
Chainhook — Echtzeit-On-Chain-Event-Streaming
// chainhooks/builder-event.json
{
"name": "builder-registered",
"version": 1,
"chain": "stacks",
"networks": {
"mainnet": {
"start_block": 150000,
"predicate": {
"scope": "contract_call",
"contract_identifier": "SP2F500B8DTRK1EANJQ054BRAB8DDKN6QCMXGNFBT.builder-rewards-v3",
"method": "register-builder"
},
"expire_after_occurrence": null
}
}
}
Beispiel-Clarity-Vertrag
;; builder-rewards-v3.clar
(define-map builder-scores principal uint)
(define-public (register-builder (builder principal))
(begin
(asserts! (is-eq tx-sender CONTRACT_OWNER) (err u403))
(map-set builder-scores builder u0)
(ok true)
)
)
(define-read-only (get-score (builder principal))
(default-to u0 (map-get? builder-scores builder))
)
(define-public (increment-score (builder principal) (points uint))
(let ((current (get-score builder)))
(map-set builder-scores builder (+ current points))
(ok (+ current points))
)
)
Lokales Ausführen
git clone https://github.com/Earnwithalee7890/stx-contract-deployment-hiro.git
cd stx-contract-deployment-hiro
npm install
cp .env.example .env # STX_PRIVATE_KEY und HIRO_API_KEY setzen
npm run dev # Next.js-Entwicklungsserver
Umgebungsvariablen
# .env.example
STX_NETWORK=mainnet # mainnet | testnet
STX_PRIVATE_KEY=your_private_key_here
HIRO_API_KEY=your_hiro_api_key # https://platform.hiro.so
NEXT_PUBLIC_CONTRACT_ADDRESS=SP2F500B8DTRK1EANJQ054BRAB8DDKN6QCMXGNFBT
Tech-Stack
| Ebene | Technologie |
|---|---|
| SDK | @earnwithalee/stx-contract (npm) |
| Framework | Next.js (App Router) |
| Smart Contracts | Clarity (Stacks Mainnet) |
| Testen | Clarinet + Vitest |
| Wallet | Leather, Xverse (Provider-Injektion) |
| Chain-API | Hiro Extended API v1 |
| Blockchain | Stacks L2 (Bitcoin-gesichert) |
| Sprache | TypeScript |
Lizenz
MIT — siehe LICENSE