BuildAndSendDeclareTxn
Builds, signs, and sends a declare transaction to register a new contract class.
Method Signature
func (account *Account) BuildAndSendDeclareTxn(
ctx context.Context,
casmClass *contracts.CasmClass,
contractClass *contracts.ContractClass,
opts *TxnOptions,
) (rpc.AddDeclareTransactionResponse, error)Parameters
ctx- Context for request cancellation and timeoutcasmClass- Compiled CASM (Cairo Assembly) classcontractClass- Sierra contract classopts- Transaction options. Passnilfor defaults
Returns
rpc.AddDeclareTransactionResponse- Response with transaction hash and class hasherror- Error if declaration fails
Usage Example
package main
import (
"context"
"fmt"
"log"
"os"
"github.com/NethermindEth/starknet.go/account"
"github.com/NethermindEth/starknet.go/contracts"
)
func main() {
// Assume acc is already created
var acc *account.Account
// Load compiled contract
sierraFile, _ := os.ReadFile("contract.sierra.json")
casmFile, _ := os.ReadFile("contract.casm.json")
contractClass, err := contracts.UnmarshalContractClass(sierraFile)
if err != nil {
log.Fatal(err)
}
casmClass, err := contracts.UnmarshalCasmClass(casmFile)
if err != nil {
log.Fatal(err)
}
// Declare the contract
response, err := acc.BuildAndSendDeclareTxn(
context.Background(),
casmClass,
contractClass,
nil, // Use default options
)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Transaction hash: %s\n", response.TransactionHash)
fmt.Printf("Class hash: %s\n", response.ClassHash)
}Description
BuildAndSendDeclareTxn registers a new contract class on Starknet. The process:
- Fetches current nonce
- Builds declare transaction with zero fees
- Signs for fee estimation
- Estimates fees
- Updates with estimated fees
- Signs again with final fees
- Sends to network
The returned class hash is used to deploy instances of this contract.
Error Handling
response, err := acc.BuildAndSendDeclareTxn(ctx, casmClass, contractClass, opts)
if err != nil {
// Handle errors like:
// - Class already declared
// - Invalid contract class
// - Compilation errors
// - Insufficient balance
return err
}Related Methods
- SignDeclareTransaction - Sign declare transactions
- DeployContractWithUDC - Deploy declared contract

