Skip to main content

Starknet

We define new types for starknet:

  • FELT, a number represented by a hex string. Prefixed with 0x. It can be left padded with zeroes or not. It follows the Cairo Field Element spec
  • ABI, a representation of a Starknet contract’s interface. As Starknet ABI Spec

starknet_requestAddInvokeTransaction​

Requests the wallet to sign and submit a INVOKE transaction

This request might be processed before the account is deployed. In that scenario the wallet will ask the user to do the deployment and the requested transaction.

Parameters​

1. `FELT`, `accountAddress` : Account that is being requested to send a transaction
2. `Object`, `executionRequest` : Transaction requested
2.1. `calls` : `Object[]` array of calls to perform
2.1.1. `contractAddress` : `Felt`
2.1.2. `entrypoint` : `Felt`
2.1.3. `calldata` : `Felt[]` (Optional)
2.2. `abis` : `ABI[]` (Optional) one or more contract abis which can be used to display the calls

Example Parameters​

{
"accountAddress": "0x003a8278a26f32452f156260d81b93efb0eca126b44df7b005a5b27e2bbc4a64",
"executionRequest" : {
"calls" : [
{
"contractAddress": "0x003a8278a26f32452f156260d81b93efb0eca126b44df7b005a5b27e2bbc4a64",
"entrypoint": "0x555278a26f32452f156260d81b93efb0eca126b44df7b005a5b27e2bbc4a64",
"calldata": ["0x003", "0xa82705a5b27e2bbc4a64"]
},
{
"contractAddress": "0x00111178a26f32452f156260d81b93efb0eca126b44df7b005a5b27e2bbc4a64",
"entrypoint": "0x0022228a26f32452f156260d81b93efb0eca126b44df7b005a5b27e2bbc4a64"
}
],
"abis" : [{
"inputs": [{ "name": "amount", "type": "felt" }],
"name": "set_balance",
"outputs": [],
"type": "function"
}]
}
}

Returns​

  1. FELT, transaction_hash : The hash of the transaction submitted by the wallet

Example​

// Request
{
"id": 1,
"jsonrpc": "2.0",
"method": "starknet_requestAddInvokeTransaction",
"params":{see above}
}

// Result
{
"id": 1,
"jsonrpc": "2.0",
"result": { "transaction_hash" : "0x01d666de4dc4d7e888190475ea6381a862e7d77cc3cb425e72ebf85e1d5144fa" }
}

starknet_signTypedData​

Request the wallet to sign an Off-chain message as defined here Starknet Off-chain message spec. This is similar to Ethereum's EIP-712

This request might be processed before the account is deployed. In that scenario the wallet will ask the user to do the deployment and sign the data

Parameters​

account, message

1. `FELT`, `accountAddress` : account address used for signing.
2. `Object`, `typedData` : typed data to sign containing type information, a domain separator, and data. It follows the Starknet Off-chain message spec

Example Parameters​

{
"accountAddress" : "0x003a8278a26f32452f156260d81b93efb0eca126b44df7b005a5b27e2bbc4a64",
"typedData" : {
"types" : {
"StarkNetDomain ": [
{ "name" : "name", "type" : "felt" },
{ "name" : "version", "type" : "felt" },
{ "name" : "chainId", "type" : "felt" }
],
"Person" : [
{ "name": "name", "type" : "felt" },
{ "name": "wallet", "type" : "felt" }
],
"Mail": [
{ "name": "from", "type": "Person" },
{ "name": "to", "type": "Person" },
{ "name": "contents", "type": "felt" }
]
},
"primaryType" : "Mail",
"domain" : {
"name" : "StarkNet Mail",
"version" : "1",
"chainId" : 1
},
"message" : {
"from" : {
"name" : "Cow",
"wallet" : "0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826"
},
"to": {
"name" : "Bob",
"wallet" : "0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB"
},
"contents" : "Hello, Bob!"
}
}
}

Returns​

  1. FELT[], signature : Signature as an array of Felts

Example​

// Request
{
"id": 1,
"jsonrpc": "2.0",
"method": "starknet_signTypedData",
"params": ["0x003a8278a26f32452f156260d81b93efb0eca126b44df7b005a5b27e2bbc4a64", {see above}]
}


// Result
{
"id": 1,
"jsonrpc": "2.0",
"result": { "signature" : ["0x3a8278a26f32452f156260d81b93efb0eca126b44df7b005a5b27e2bbc4a64", "0x072e509b6502e2bbc4a649052eb6c299d53a04e16605b915621c", "0x07897a1b93efb0eca126b44df4646", "0x072e509b6502e2bbc4a649052eb6c299d53a04e16605b915621c"] }
}