Skip to content

TransactionHashDeclare

Calculates the transaction hash for a declare transaction.

Method Signature

func (account *Account) TransactionHashDeclare(tx rpc.DeclareTxnType) (*felt.Felt, error)

Parameters

  • tx - Declare transaction (V1, V2, V3, or BroadcastV3)

Returns

  • *felt.Felt - Transaction hash
  • error - Error if hash calculation fails

Usage Example

Prerequisites: This example assumes you have an account instance already created. To learn how to create an account, see NewAccount.

package main
 
import (
	"fmt"
	"log"
 
	"github.com/NethermindEth/juno/core/felt"
	"github.com/NethermindEth/starknet.go/account"
	"github.com/NethermindEth/starknet.go/rpc"
)
 
func main() {
	// Assuming 'acc' is your Account instance
	var acc *account.Account
	// acc = ... (already initialized)
 
	// Create a declare transaction V2
	accountAddress, _ := new(felt.Felt).SetString("0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7")
	classHash, _ := new(felt.Felt).SetString("0x01f372292df22d28f2d4c5798734421afe9596e6a566b8bc9b7b50e26521b855")
	compiledClassHash, _ := new(felt.Felt).SetString("0x017f655f7a639a49ea1d8d56172e99cff8b51f4123b733f0378dfd6378a2cd37")
 
	declareTx := rpc.DeclareTxnV2{
		Type:              rpc.TransactionTypeDeclare,
		SenderAddress:     accountAddress,
		CompiledClassHash: compiledClassHash,
		ClassHash:         classHash,
		MaxFee:            new(felt.Felt).SetUint64(1000000000000),
		Version:           rpc.TransactionV2,
		Signature:         []*felt.Felt{},
		Nonce:             new(felt.Felt).SetUint64(0),
	}
 
	// Calculate transaction hash
	txHash, err := acc.TransactionHashDeclare(declareTx)
	if err != nil {
		log.Fatalf("Error calculating hash: %v", err)
	}
 
	fmt.Printf("Transaction hash: %s\n", txHash)
}

Expected Output

Transaction hash: 0x6270e552411fcb00d24f7a32ef2d3ad77e54373df700629031885b017069121

Description

TransactionHashDeclare calculates the hash for declare transactions. Note that V0 transactions are not supported.

Error Handling

hash, err := acc.TransactionHashDeclare(tx)
if err != nil {
	if err == account.ErrTxnVersionUnSupported {
		// Handle unsupported version (V0)
	}
	return err
}

Related Methods