Package-level declarations

Account interface used to simplify preparing, signing Starknet transactions and automatic fee estimation.

Example usages of StandardAccount

import com.swmansion.starknet.account.Account;
import com.swmansion.starknet.account.StandardAccount;
import com.swmansion.starknet.data.types.*;
import com.swmansion.starknet.data.types.transactions.InvokeFunctionPayload;
import com.swmansion.starknet.provider.Provider;
import com.swmansion.starknet.provider.Request;
import com.swmansion.starknet.provider.rpc.JsonRpcProvider;

import java.util.List;

public class Main {
public static void main(String[] args) {
Provider provider = new JsonRpcProvider("https://example-node-url.com/rpc");
Felt address = new Felt(0x1234);
Felt privateKey = new Felt(0x1);
Account account = new StandardAccount(address, privateKey, provider);

// Execute a single call
Felt maxFee = new Felt(10000000L);
Felt contractAddress = new Felt(0x1111);
Call call = new Call(contractAddress, "increase_balance", List.of(new Felt(100)));
Request<InvokeFunctionResponse> request = account.execute(call, maxFee);
InvokeFunctionResponse response = request.send();

// Execute multiple calls
Call call1 = new Call(contractAddress, "increase_balance", List.of(new Felt(100)));
Call call2 = new Call(contractAddress, "increase_balance", List.of(new Felt(200)));
account.execute(List.of(call1, call2), maxFee).send();

// Use automatic maxFee estimation
account.execute(call).send();
// or
account.execute(List.of(call1, call2)).send();

// Construct transaction step by step
Call otherCall = new Call(contractAddress, "increase_balance", List.of(new Felt(100)));
EstimateFeeResponse feeEstimate = account.estimateFee(otherCall).send();
Felt nonce = account.getNonce().send();
InvokeTransactionPayload signedTransaction = account.sign(otherCall, new ExecutionParams(nonce, maxFee));
InvokeFunctionResponse signedInvokeResponse = provider.invokeFunction(signedTransaction).send();

// Sign transaction for fee estimation only
InvokeTransactionPayload transactionForFeeEstimation = account.sign(call, new ExecutionParams(nonce, Felt.ZERO), true);

// Sign and verify TypedData signature
TypedData typedData = TypedData.fromJsonString("...");
List<Felt> typedDataSignature = account.signTypedData(typedData);
Request<Boolean> isValidSignatureRequest = account.verifyTypedDataSignature(typedData, typedDataSignature);
boolean isValidSignature = isValidSignatureRequest.send();
}
}

or in Kotlin

fun main(args: Array<String>) {
val provider: Provider = makeTestnetProvider()
val address = Felt(0x1234)
val privateKey = Felt(0x1)
val account: Account = StandardAccount(address, privateKey, provider)

// Execute a single call
val maxFee = Felt(10000000L)
val contractAddress = Felt(0x1111)
val call = Call(contractAddress, "increase_balance", listOf(Felt(100)))
val request = account.execute(call, maxFee)
val response = request.send()

// Execute multiple calls
val call1 = Call(contractAddress, "increase_balance", listOf(Felt(100)))
val call2 = Call(contractAddress, "increase_balance", listOf(Felt(200)))
account.execute(listOf(call1, call2), maxFee).send()

// Use automatic maxFee estimation
account.execute(call).send()
// or
account.execute(listOf(call1, call2)).send()

// Construct transaction step by step
val otherCall = Call(contractAddress, "increase_balance", listOf(Felt(100)))
val (gasConsumed, gasPrice, overallFee) = account.estimateFee(otherCall).send()
val nonce = account.getNonce().send()
val signedTransaction = account.sign(otherCall, ExecutionParams(nonce, maxFee))
val signedInvokeResponse = provider.invokeFunction(signedTransaction).send()

// Sign transaction for fee estimation only
val transactionForFeeEstimation = account.sign(call, ExecutionParams(nonce, Felt.ZERO), true)

// Sign and verify TypedData signature
val typedData = TypedData.fromJsonString("...");
val typedDataSignature = account.signTypedData(typedData)
val isValidSignatureRequest = account.verifyTypedDataSignature(typedData, typedDataSignature)
val isValidSignature = isValidSignatureRequest.send()
}

Types

Link copied to clipboard
interface Account

An account interface.

Link copied to clipboard
class StandardAccount @JvmOverloads constructor(val address: Felt, signer: Signer, provider: Provider, val chainId: StarknetChainId, cairoVersion: Felt = Felt.ZERO) : Account

Standard account used in Starknet.