Pierwszy krok: inicjalizacja projektu Blocklet

blocklet create my-abt-staking-dapp

# Wybierz szablon React + Node.js

Drugi krok: logika stakowania po stronie serwera (Node.js)

Po stronie serwera musisz obsłużyć żądanie transakcji stakowania od użytkownika.

// server/api/routes/staking.js

const { Wallet } = require('@arcblock/forge-wallet');

const { Mcrypto } = require('@arcblock/mcrypto');

// Załóżmy, że to jest twój adres DApp (do odbierania stakowanych ABT)

const VAULT_ADDRESS = 'z1...your_vault_address';

async function createStakeTx(userDid, amount) {

// Tworzy transakcję transferu, aby użytkownik mógł wysłać ABT do skarbca

// W ArcBlock zazwyczaj odbywa się to poprzez wygenerowanie głębokiego linku, aby portfel DID mógł podpisać

return {

to: VAULT_ADDRESS,

value: amount, // jednostka to najmniejsza jednostka tokenów

memo: 'Staking for Rewards',

};

}

Krok drugi: interfejs użytkownika (React)

Użyj @arcblock/did-connect dostarczonego przez ArcBlock do obsługi połączenia portfela i płatności.

// src/components/StakeButton.jsx

import DidConnect from '@arcblock/did-connect/lib/Connect';

function StakeComponent() {

const [amount, setAmount] = useState(0);

return (

<div className="staking-card">

<h2>Stakuj ABT, aby zarabiać na prawach</h2>

<input

type="number"

onChange={(e) => setAmount(e.target.value)}

placeholder="Wprowadź ilość stakowania"

/>

<DidConnect

action="stake"

checkFn={api.get('/api/check-stake-status')}

onSuccess={() => alert('Stakowanie zakończone sukcesem!')}

// Przygotowanie tutaj wywoła backendową funkcję createStakeTx

prepareFn={api.get(`/api/prepare-stake?amount=${amount}`)}

>

Stakuj teraz

</DidConnect>

</div>

);

}

Krok trzeci: logika obliczania zysków (symulacja)

Ponieważ ABT obecnie nie ma natywnej nagrody za inflację, twoje nagrody za staking mogą być ustawione na:

• Punkty ekosystemu: używane do wymiany na usługi innych Blockletów.

• Odznaki NFT: jako dowód głosowania w przyszłej administracji.