Il codice per eseguire una transazione di stake sulla blockchain Takamaka

27.02.23

Una "stake" sulla blockchain in generale, si riferisce alla quantità di criptovaluta che una persona detiene ed è disposta a impegnare come garanzia al fine di partecipare al processo di consenso di una specifica rete. 

Il termine è più comunemente usato nel contesto dei sistemi blockchain di proof-of-stake (PoS), in cui gli individui possono impegnare le loro monete per convalidare le transazioni e proteggere la rete, anziché utilizzare la potenza del computer per risolvere complessi enigmi matematici (come nei sistemi di proof-of-work). 

Più monete una persona stakea, maggiori sono le sue possibilità di essere selezionata per convalidare un blocco di transazioni ed ottenere una ricompensa

Il codice 

 

Per prima cosa devi sapere che il codice è stato scritto in Java con lo scopo di creare ed eseguire una transazione blockchain. Come spiegato nella premessa, la transazione coinvolge una stake, che si riferisce alla quantità di criptovaluta che una persona possiede e che si è disposto a impegnare come garanzia al fine di partecipare al processo di consenso di una specifica rete blockchain.

Il codice che puoi leggere a questo Link [https://github.com/takamaka-dev/takamaka-core-wallet-examples/blob/master/README.md], importa diverse classi dal pacchetto takamaka per consentire la creazione di un portafoglio, la generazione di una chiave pubblica e l'esecuzione di una transazione. Utilizza inoltre varie utility come TkmSignUtils, TkmTK e TransactionFeeCalculator.

Nel caso specifico, il codice è un esempio di come eseguire una transazione di "staking" sulla blockchain Takamaka e include l'importazione di varie classi e librerie per creare un oggetto TransactionBox, contenente una transazione di stake, da inviare alla blockchain. La transazione di stake viene quindi firmata con una chiave privata tramite la classe TkmSignUtils e il suo costo calcolato tramite la classe TransactionFeeCalculator. Infine, l'oggetto TransactionBox inviato alla blockchain attraverso la classe TkmTK. 

package io.takamaka.takamaka.core.wallet.examples;
 

import io.takamaka.takamaka.core.wallet.examples.support.ProjectHelper;

import io.takamaka.wallet.InstanceWalletKeyStoreBCED25519;

import io.takamaka.wallet.InstanceWalletKeystoreInterface;

import io.takamaka.wallet.beans.FeeBean;

import io.takamaka.wallet.beans.InternalTransactionBean;

import io.takamaka.wallet.beans.TransactionBean;

import io.takamaka.wallet.beans.TransactionBox;

import io.takamaka.wallet.utils.BuilderITB;

import io.takamaka.wallet.utils.TkmSignUtils;

import io.takamaka.wallet.utils.TkmTK;

import io.takamaka.wallet.utils.TkmTextUtils;

import io.takamaka.wallet.utils.TkmWallet;

import io.takamaka.wallet.utils.TransactionFeeCalculator;

import java.math.BigInteger;

import java.util.Date;

import lombok.extern.slf4j.Slf4j;

 

/**

 *

 * @author Giovanni Antino giovanni.antino@takamaka.io

 */

@Slf4j

public class SubmitStake {

La prima parte definisce costanti che contengono i nomi e le password dei portafogli di origine e destinazione, i parametri della transazione, come la quantità di criptovaluta da trasferire (in questo caso, 200 TKG), la tassa di transazione e il tempo di inclusione della transazione.

 log.info("The minimum stake accepted from takamaka blockchain is "

                + "200 TKG");

                final BigInteger twoHundredTKGValue = TkmTK.unitTK(200);

                log.info("200 TKG value in nano TKG " + twoHundredTKGValue.toString());
 

La transazione viene quindi eseguita utilizzando la classe TransactionBean, che rappresenta una tx sulla blockchain. BuilderITB è una classe di utilità che viene utilizzata per creare l'oggetto di transazione, che viene quindi firmato, utilizzando la chiave privata del portafoglio di origine con la classe TkmSignUtils. 

...

 InternalTransactionBean stakeITB = BuilderITB.stake(

                publicKeySource,

                publicKeyDestination,

                twoHundredTKGValue,

                "test stake",

                transactionInclusionTime

....

 

Infine, la transazione è inviata alla blockchain utilizzando la classe TkmWallet.

 TransactionBox stakeTbox = TkmWallet.verifyTransactionIntegrity(

                stakeTransactionJson);

        log.info("the transaction is valid?: " + stakeTbox.isValid());

CONCLUSIONI

Il codice utilizza diverse librerie Java come ad esempio Lombok e Takamaka Core Wallet e utilizza diverse classi e metodi come ad esempio InstanceWalletKeyStoreBCED25519, TkmTK e TkmWallet.

Per utilizzare questo codice è necessario disporre dell'ambiente di sviluppo Java e di tutte le librerie necessarie, inoltre bisogna fornire il nome del portafoglio e la password per il mittente e il destinatario della transazione.

In generale, il codice consente la creazione ed esecuzione di una transazione di stake sulla blockchain Takamaka. Per una spiegazione più dettagliata, si prega di fare riferimento ai commenti all'interno del codice stesso. 

Il codice lo trovi al link https://github.com/takamaka-dev/takamaka-core-wallet-examples/blob/master/src/main/java/io/takamaka/takamaka/core/wallet/examples/SubmitStake.java

Visita

https://www.takamaka.io
https://github.com/takamaka-dev