FmtCallDataCairo2
Formats function calls into calldata for Cairo 2 contracts.
Function Signature
func FmtCallDataCairo2(callArray []rpc.FunctionCall) []*felt.FeltParameters
callArray- Slice of function calls to format
Returns
[]*felt.Felt- Formatted calldata array for Cairo 2 contracts
Usage Example
package main
import (
"fmt"
"github.com/NethermindEth/juno/core/felt"
"github.com/NethermindEth/starknet.go/account"
"github.com/NethermindEth/starknet.go/rpc"
)
func main() {
// Create contract address manually to avoid utils import
contractAddress, _ := new(felt.Felt).SetString("0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7")
// Create entry point selector manually (this is the selector for "transfer")
entryPointSelector, _ := new(felt.Felt).SetString("0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e")
// Create recipient address
recipient, _ := new(felt.Felt).SetString("0x1234567890abcdef")
// Create function calls
functionCalls := []rpc.FunctionCall{
{
ContractAddress: contractAddress,
EntryPointSelector: entryPointSelector,
Calldata: []*felt.Felt{
recipient, // recipient
new(felt.Felt).SetUint64(100), // amount low
new(felt.Felt).SetUint64(0), // amount high
},
},
}
// Format calldata for Cairo 2
calldata := account.FmtCallDataCairo2(functionCalls)
fmt.Printf("Formatted calldata length: %d\n", len(calldata))
// Display the formatted calldata structure
fmt.Println("\nCalldata structure (Cairo 2):")
fmt.Printf(" Number of calls: %s\n", calldata[0])
if len(calldata) > 1 {
fmt.Printf(" First call contract: %s\n", calldata[1])
}
if len(calldata) > 2 {
fmt.Printf(" First call selector: %s\n", calldata[2])
}
// Display all calldata elements
fmt.Println("\nFull calldata array:")
for i, data := range calldata {
fmt.Printf(" [%d]: %s\n", i, data)
}
}Expected Output
Formatted calldata length: 7
Calldata structure (Cairo 2):
Number of calls: 0x1
First call contract: 0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7
First call selector: 0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e
Full calldata array:
[0]: 0x1
[1]: 0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7
[2]: 0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e
[3]: 0x3
[4]: 0x1234567890abcdef
[5]: 0x64
[6]: 0x0Error Handling
This function does not return errors. Ensure the function calls array is properly populated before calling.
if len(functionCalls) == 0 {
log.Fatal("No function calls to format")
}
calldata := account.FmtCallDataCairo2(functionCalls)
// Safe to use calldataRelated Methods
- FmtCallDataCairo0 - Format calldata for Cairo 0 contracts
- Account.FmtCalldata - Automatically formats based on account's Cairo version

