Skip to content
You are reading Hyperledger Besu development version documentation and some displayed features may not be available in the stable release. You can switch to stable version using the version box at screen bottom.
Date of last update: September 14, 2022

Private network API methods

Attention

  • This reference contains API methods that apply to only private networks. For API methods that apply to both private and public networks, see the public network API reference.
  • All JSON-RPC HTTP examples use the default host and port endpoint http://127.0.0.1:8545. If using the –rpc-http-host or –rpc-http-port options, update the endpoint.

CLIQUE methods

The CLIQUE API methods provide access to the Clique consensus engine.

Note

The CLIQUE API methods are not enabled by default for JSON-RPC. To enable the CLIQUE API methods use the --rpc-http-api or --rpc-ws-api options.

clique_discard

Discards a proposal to add or remove a signer with the specified address.

Parameters

address: string - 20-byte address of proposed signer

Returns

result: boolean - indicates if the proposal is discarded

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"clique_discard","params":["0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73"], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"clique_discard","params":["0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73"], "id":1}
{
  "jsonrpc" : "2.0",
  "id" : 1,
  "result" : true
}

clique_getSigners

Lists signers for the specified block.

Parameters

blockNumber: string - integer representing a block number or one of the string tags latest, earliest, or pending, as described in Block Parameter

Returns

result: array of string - list of 20-byte addresses of signers

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"clique_getSigners","params":["latest"], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"clique_getSigners","params":["latest"], "id":1}
{
  "jsonrpc" : "2.0",
  "id" : 1,
  "result" : [ "0x42eb768f2244c8811c63729a21a3569731535f06", "0x7ffc57839b00206d1ad20c69a1981b489f772031", "0xb279182d99e65703f0076e4812653aab85fca0f0" ]
}

clique_getSignerMetrics

Provides the following validator metrics for the specified range:

  • Number of blocks from each validator

  • Block number of the last block proposed by each validator (if any proposed in the specified range)

  • All validators present in the last block

Parameters

  • fromBlockNumber: string - integer representing a block number or the string tag earliest, as described in Block Parameter

  • toBlockNumber: string - integer representing a block number or one of the string tags latest or pending, as described in Block Parameter

If you specify:

  • No parameters, the call provides metrics for the last 100 blocks, or all blocks if there are less than 100 blocks.

  • Only the first parameter, the call provides metrics for all blocks from the block specified to the latest block.

Returns

result: array of objects - list of validator objects

Note

The proposer of the genesis block has address 0x0000000000000000000000000000000000000000.

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"clique_getSignerMetrics","params":["1", "100"], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"clique_getSignerMetrics","params":["1", "100"], "id":1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": [
        {
            "address": "0x7ffc57839b00206d1ad20c69a1981b489f772031",
            "proposedBlockCount": "0x21",
            "lastProposedBlockNumber": "0x61"
        },
        {
            "address": "0x42eb768f2244c8811c63729a21a3569731535f06",
            "proposedBlockCount": "0x21",
            "lastProposedBlockNumber": "0x63"
        },
        {
            "address": "0xb279182d99e65703f0076e4812653aab85fca0f0",
            "proposedBlockCount": "0x21",
            "lastProposedBlockNumber": "0x62"
        }
    ]
}

clique_getSignersAtHash

Lists signers for the specified block.

Parameters

hash: string - 32-byte block hash

Returns

result: array of string - list of 20-byte addresses of signers

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"clique_getSignersAtHash","params":["0x98b2ddb5106b03649d2d337d42154702796438b3c74fd25a5782940e84237a48"], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"clique_getSignersAtHash","params":["0x98b2ddb5106b03649d2d337d42154702796438b3c74fd25a5782940e84237a48"], "id":1}
{
  "jsonrpc" : "2.0",
  "id" : 1,
  "result" : [ "0x42eb768f2244c8811c63729a21a3569731535f06", "0x7ffc57839b00206d1ad20c69a1981b489f772031", "0xb279182d99e65703f0076e4812653aab85fca0f0" ]
}

clique_proposals

Returns current proposals.

Parameters

None

Returns

result: map of strings to booleans - map of account addresses to corresponding boolean values indicating the proposal for each account (if true, the proposal is to add a signer; if false, the proposal is to remove a signer.)

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"clique_proposals","params":[], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"clique_proposals","params":[], "id":1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {
        "0x42eb768f2244c8811c63729a21a3569731535f07": false,
        "0x12eb759f2222d7711c63729a45c3585731521d01": true
    }
}

clique_propose

Proposes to add or remove a signer with the specified address.

Parameters

  • address: string - 20-byte address

  • proposal: boolean - true to propose adding signer or false to propose removing signer

Returns

result: boolean - true

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"clique_propose","params":["0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73", true], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"clique_propose","params":["0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73", true], "id":1}
{
  "jsonrpc" : "2.0",
  "id" : 1,
  "result" : true
}

EEA methods

The EEA API methods provide functionality for private transactions and privacy groups.

Note

The EEA API methods are not enabled by default for JSON-RPC. To enable the EEA API methods, use the --rpc-http-api or --rpc-ws-api options.

eea_sendRawTransaction

Distributes the private transaction, generates the privacy marker transaction and submits it to the transaction pool, and returns the transaction hash of the privacy marker transaction.

The signed transaction passed as an input parameter includes the privateFrom, privateFor or privacyGroupId, and restriction fields.

The gas and gasPrice are used by the privacy marker transaction not the private transaction itself.

To avoid exposing your private key, create signed transactions offline and send the signed transaction data using eea_sendRawTransaction.

Important

For production systems requiring private transactions, use a network with a consensus mechanism supporting transaction finality to make sure the private state does not become inconsistent with the chain. For example, IBFT 2.0 and QBFT provide the required finality.

Using private transactions with pruning or fast sync is not supported.

Besu doesn’t implement eea_sendTransaction.

EthSigner provides transaction signing and implements eea_sendTransaction.

Parameters

transaction: string - signed RLP-encoded private transaction

Returns

result: string - 32-byte transaction hash of the privacy marker transaction

Tip

If creating a contract, use priv_getTransactionReceipt to retrieve the contract address after the transaction is finalized.

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"eea_sendRawTransaction","params": ["0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833"], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"eea_sendRawTransaction","params": ["0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833"], "id":1}
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
}

IBFT 2.0 methods

The IBFT API methods provide access to the IBFT 2.0 consensus engine.

Note

The IBFT API methods are not enabled by default for JSON-RPC. To enable the IBFT API methods, use the --rpc-http-api or --rpc-ws-api options.

ibft_discardValidatorVote

Discards a proposal to add or remove a validator with the specified address.

Parameters

address: string - 20-byte address of proposed validator

Returns

result: boolean - indicates if the proposal is discarded

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"ibft_discardValidatorVote","params":["0xef1bfb6a12794615c9b0b5a21e6741f01e570185"], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"ibft_discardValidatorVote","params":["0xef1bfb6a12794615c9b0b5a21e6741f01e570185"], "id":1}
{
  "jsonrpc" : "2.0",
  "id" : 1,
  "result" : true
}

ibft_getPendingVotes

Returns votes cast in the current epoch.

Parameters

None

Returns

result: map of strings to booleans - map of account addresses to corresponding boolean values indicating the vote for each account; if true, the vote is to add a validator. If false, the proposal is to remove a validator.

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"ibft_getPendingVotes","params":[], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"ibft_getPendingVotes","params":[], "id":1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {
        "0xef1bfb6a12794615c9b0b5a21e6741f01e570185": true,
        "0x42d4287eac8078828cf5f3486cfe601a275a49a5": true
    }
}

ibft_getSignerMetrics

Provides the following validator metrics for the specified range:

  • Number of blocks from each validator

  • Block number of the last block proposed by each validator (if any proposed in the specified range)

  • All validators present in the last block of the range

Parameters

  • fromBlockNumber: string - integer representing a block number or the string tag earliest as described in Block Parameter

  • toBlockNumber: string - integer representing a block number or one of the string tags latest or pending, as described in Block Parameter

If you specify:

  • No parameters, the call provides metrics for the last 100 blocks, or all blocks if there are less than 100 blocks.

  • Only the first parameter, the call provides metrics for all blocks from the block specified to the latest block.

Returns

result: array of objects - list of validator objects

Note

The proposer of the genesis block has address 0x0000000000000000000000000000000000000000.

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"ibft_getSignerMetrics","params":["1", "100"], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"ibft_getSignerMetrics","params":["1", "100"], "id":1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": [
        {
            "address": "0x7ffc57839b00206d1ad20c69a1981b489f772031",
            "proposedBlockCount": "0x21",
            "lastProposedBlockNumber": "0x61"
        },
        {
            "address": "0x42eb768f2244c8811c63729a21a3569731535f06",
            "proposedBlockCount": "0x21",
            "lastProposedBlockNumber": "0x63"
        },
        {
            "address": "0xb279182d99e65703f0076e4812653aab85fca0f0",
            "proposedBlockCount": "0x21",
            "lastProposedBlockNumber": "0x62"
        }
    ]
}

ibft_getValidatorsByBlockHash

Lists the validators defined in the specified block.

Parameters

block: string - 32-byte block hash

Returns

result: array of strings - list of validator addresses

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"ibft_getValidatorsByBlockHash","params":["0xbae7d3feafd743343b9a4c578cab5e5d65eb735f6855fb845c00cab356331256"], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"ibft_getValidatorsByBlockHash","params":["0xbae7d3feafd743343b9a4c578cab5e5d65eb735f6855fb845c00cab356331256"], "id":1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": [
        "0x42d4287eac8078828cf5f3486cfe601a275a49a5",
        "0xb1b2bc9582d2901afdc579f528a35ca41403fa85",
        "0xef1bfb6a12794615c9b0b5a21e6741f01e570185"
    ]
}

ibft_getValidatorsByBlockNumber

Lists the validators defined in the specified block.

Parameters

  • blockNumber: string - integer representing a block number or one of the string tags latest, earliest, or pending, as described in Block Parameter

Returns

result: array of strings - list of validator addresses

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"ibft_getValidatorsByBlockNumber","params":["latest"], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"ibft_getValidatorsByBlockNumber","params":["latest"], "id":1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": [
        "0x42d4287eac8078828cf5f3486cfe601a275a49a5",
        "0xb1b2bc9582d2901afdc579f528a35ca41403fa85",
        "0xef1bfb6a12794615c9b0b5a21e6741f01e570185"
    ]
}

ibft_proposeValidatorVote

Proposes to add or remove a validator with the specified address.

Parameters

  • address: string - account address

  • proposal: boolean - true to propose adding validator or false to propose removing validator

Returns

result: boolean - true

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"ibft_proposeValidatorVote","params":["42d4287eac8078828cf5f3486cfe601a275a49a5",true], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"ibft_proposeValidatorVote","params":["42d4287eac8078828cf5f3486cfe601a275a49a5",true], "id":1}
{
  "jsonrpc" : "2.0",
  "id" : 1,
  "result" : true
}

PERM (Permissioning) methods

The PERM API methods provide permissioning functionality. Use these methods for local permissioning only.

Important

The PERM API methods are not enabled by default for JSON-RPC. To enable the PERM API methods, use the --rpc-http-api or --rpc-ws-api CLI options.

perm_addAccountsToAllowlist

Adds accounts (participants) to the accounts permission list.

Parameters

addresses: array of strings - list of account addresses

Note

The parameters list contains a list which is why the account addresses are enclosed by double square brackets.

Returns

result: string - Success or error (errors include attempting to add accounts already on the allowlist and including invalid account addresses.)

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"perm_addAccountsToAllowlist","params":[["0xb9b81ee349c3807e46bc71aa2632203c5b462032", "0xb9b81ee349c3807e46bc71aa2632203c5b462034"]], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"perm_addAccountsToAllowlist","params":[["0xb9b81ee349c3807e46bc71aa2632203c5b462032", "0xb9b81ee349c3807e46bc71aa2632203c5b462034"]], "id":1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": "Success"
}

perm_addNodesToAllowlist

Adds nodes to the nodes allowlist.

To use domain names in enode URLs, ensure you enable DNS support to avoid receiving a request contains an invalid node error.

Warning

Enode URL domain name support is an early access feature.

Parameters

enodes: array of strings - list of enode URLs

Note

The parameters list contains a list which is why the enode URLs are enclosed by double square brackets.

Returns

result: string - Success or error; errors include attempting to add nodes already on the allowlist or including invalid enode URLs.

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"perm_addNodesToAllowlist","params":[["enode://7e4ef30e9ec683f26ad76ffca5b5148fa7a6575f4cfad4eb0f52f9c3d8335f4a9b6f9e66fcc73ef95ed7a2a52784d4f372e7750ac8ae0b544309a5b391a23dd7@127.0.0.1:30303","enode://2feb33b3c6c4a8f77d84a5ce44954e83e5f163e7a65f7f7a7fec499ceb0ddd76a46ef635408c513d64c076470eac86b7f2c8ae4fcd112cb28ce82c0d64ec2c94@127.0.0.1:30304"]], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"perm_addNodesToAllowlist","params":[["enode://7e4ef30e9ec683f26ad76ffca5b5148fa7a6575f4cfad4eb0f52f9c3d8335f4a9b6f9e66fcc73ef95ed7a2a52784d4f372e7750ac8ae0b544309a5b391a23dd7@127.0.0.1:30303","enode://2feb33b3c6c4a8f77d84a5ce44954e83e5f163e7a65f7f7a7fec499ceb0ddd76a46ef635408c513d64c076470eac86b7f2c8ae4fcd112cb28ce82c0d64ec2c94@127.0.0.1:30304"]], "id":1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": "Success"
}

perm_getAccountsAllowlist

Lists accounts (participants) in the accounts permissions list.

Parameters

None

Returns

result: array of strings - list of accounts (participants) in the accounts allowlist

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"perm_getAccountsAllowlist","params":[], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"perm_getAccountsAllowlist","params":[], "id":1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": [
        "0x0000000000000000000000000000000000000009",
        "0xb9b81ee349c3807e46bc71aa2632203c5b462033"
    ]
}

perm_getNodesAllowlist

Lists nodes in the nodes allowlist.

Parameters

None

Returns

result: array of strings - enode URLs of nodes in the nodes allowlist

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"perm_getNodesAllowlist","params":[], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"perm_getNodesAllowlist","params":[], "id":1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": [
        "enode://7b61d5ee4b44335873e6912cb5dd3e3877c860ba21417c9b9ef1f7e500a82213737d4b269046d0669fb2299a234ca03443f25fe5f706b693b3669e5c92478ade@127.0.0.1:30305",
        "enode://2feb33b3c6c4a8f77d84a5ce44954e83e5f163e7a65f7f7a7fec499ceb0ddd76a46ef635408c513d64c076470eac86b7f2c8ae4fcd112cb28ce82c0d64ec2c94@127.0.0.1:30304"
    ]
}

perm_reloadPermissionsFromFile

Reloads the accounts and nodes allowlists from the permissions configuration file.

Parameters

None

Returns

result: string - Success, or error if the permissions configuration file is not valid

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"perm_reloadPermissionsFromFile","params":[], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"perm_reloadPermissionsFromFile","params":[], "id":1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": "Success"
}

perm_removeAccountsFromAllowlist

Removes accounts (participants) from the accounts permissions list.

Parameters

addresses: array of strings - list of account addresses

Note

The parameters list contains a list which is why the account addresses are enclosed by double square brackets.

Returns

result: string - Success or error (errors include attempting to remove accounts not on the allowlist and including invalid account addresses.)

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"perm_removeAccountsFromAllowlist","params":[["0xb9b81ee349c3807e46bc71aa2632203c5b462032", "0xb9b81ee349c3807e46bc71aa2632203c5b462034"]], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"perm_removeAccountsFromAllowlist","params":[["0xb9b81ee349c3807e46bc71aa2632203c5b462032", "0xb9b81ee349c3807e46bc71aa2632203c5b462034"]], "id":1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": "Success"
}

perm_removeNodesFromAllowlist

Removes nodes from the nodes allowlist.

Parameters

enodes: array of strings - list of enode URLs

Note

The parameters list contains a list which is why the enode URLs are enclosed by double square brackets.

Returns

result: string - Success or error (errors include attempting to remove nodes not on the allowlist and including invalid enode URLs.)

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"perm_removeNodesFromAllowlist","params":[["enode://7e4ef30e9ec683f26ad76ffca5b5148fa7a6575f4cfad4eb0f52f9c3d8335f4a9b6f9e66fcc73ef95ed7a2a52784d4f372e7750ac8ae0b544309a5b391a23dd7@127.0.0.1:30303","enode://2feb33b3c6c4a8f77d84a5ce44954e83e5f163e7a65f7f7a7fec499ceb0ddd76a46ef635408c513d64c076470eac86b7f2c8ae4fcd112cb28ce82c0d64ec2c94@127.0.0.1:30304"]], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"perm_removeNodesFromAllowlist","params":[["enode://7e4ef30e9ec683f26ad76ffca5b5148fa7a6575f4cfad4eb0f52f9c3d8335f4a9b6f9e66fcc73ef95ed7a2a52784d4f372e7750ac8ae0b544309a5b391a23dd7@127.0.0.1:30303","enode://2feb33b3c6c4a8f77d84a5ce44954e83e5f163e7a65f7f7a7fec499ceb0ddd76a46ef635408c513d64c076470eac86b7f2c8ae4fcd112cb28ce82c0d64ec2c94@127.0.0.1:30304"]], "id":1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": "Success"
}

PRIV methods

The PRIV API methods provide functionality for private transactions and privacy groups.

Note

The PRIV API methods are not enabled by default for JSON-RPC. To enable the PRIV API methods, use the --rpc-http-api or --rpc-ws-api options.

priv_call

Invokes a private contract function locally and does not change the privacy group state.

For private contracts, priv_call is the same as eth_call for public contracts.

Parameters

Returns

result: data - return value of the executed contract

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"priv_call","params":["tb8NVyQqZnHNegf/3mYsyB+HEud4SPWn90rz3GoskRw=", {"to":"0x69498dd54bd25aa0c886cf1f8b8ae0856d55ff13","data": "0x3fa4f245"}, "latest"],"id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"priv_call","params":["tb8NVyQqZnHNegf/3mYsyB+HEud4SPWn90rz3GoskRw=", {"to":"0x69498dd54bd25aa0c886cf1f8b8ae0856d55ff13","data": "0x3fa4f245"}, "latest"],"id":1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": "0x0000000000000000000000000000000000000000000000000000000000000001"
}
curl -X POST -H "Content-Type: application/json" --data '{ "query": "{block {number call (data : {from : \"0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b\", to: \"0x69498dd54bd25aa0c886cf1f8b8ae0856d55ff13\", data :\"0x12a7b914\"}){data status}}}"}' http://localhost:8547/graphql
{
  block {
    number
    call(data: {from: "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", to: "0x69498dd54bd25aa0c886cf1f8b8ae0856d55ff13", data: "0x12a7b914"}) {
      data
      status
    }
  }
}
{
  "data" : {
    "block" : {
      "number" : 17449,
      "call" : {
        "data" : "0x",
        "status" : 1
      }
    }
  }
}

priv_createPrivacyGroup

Creates a group of nodes, specified by their Tessera public key.

Parameters

options: object - request options object with the following fields:

  • addresses: array of strings - list of nodes specified by Tessera public keys

  • name: string - (optional) privacy group name

  • description: string - (optional) privacy group description

Returns

result: string - privacy group ID

Example

curl -X POST --data '{"jsonrpc":"2.0","method": "priv_createPrivacyGroup", "params": [{"addresses":["sTZpbQhcOfd9ZaFDnC00e/N2Ofv9p4/ZTBbEeVtXJ3E=","quhb1pQPGN1w8ZSZSyiIfncEAlVY/M/rauSyQ5wVMRE="],"name":"Group A","description":"Description Group A"}],"id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method": "priv_createPrivacyGroup", "params": [{"addresses":["sTZpbQhcOfd9ZaFDnC00e/N2Ofv9p4/ZTBbEeVtXJ3E=","quhb1pQPGN1w8ZSZSyiIfncEAlVY/M/rauSyQ5wVMRE="],"name":"Group A","description":"Description Group A"}],"id":1}
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": "ewuTVoc5nlvWMwTFdRRK/wvV0dcyQo/Pauvx5bNEbTk="
}

priv_debugGetStateRoot

Returns the state root of the specified privacy group at the specified block.

Parameters

  • privacyGroupId: string - 32-byte privacy Group ID

  • blockNumber: string - integer representing a block number or one of the string tags latest, earliest, or pending, as described in Block Parameter

Returns

result: string - 32-byte state root

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"priv_debugGetStateRoot","params":["xJdxvWOEmrs2MCkKWlgArTzWIXFfU/tmVxI3EKssVTk=","latest"],"id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"priv_debugGetStateRoot","params":["xJdxvWOEmrs2MCkKWlgArTzWIXFfU/tmVxI3EKssVTk=","latest"],"id":1}
{
  "jsonrpc" : "2.0",
  "id" : 1,
  "result" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"
}

priv_deletePrivacyGroup

Deletes the specified privacy group.

Parameters

privacyGroupId: string - privacy group ID

Returns

result: string - deleted privacy group ID

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"priv_deletePrivacyGroup","params":["ewuTVoc5nlvWMwTFdRRK/wvV0dcyQo/Pauvx5bNEbTk="],"id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"priv_deletePrivacyGroup","params":["ewuTVoc5nlvWMwTFdRRK/wvV0dcyQo/Pauvx5bNEbTk="],"id":1}
{
  "jsonrpc": "2.0",
  "id": 53,
  "result": "ewuTVoc5nlvWMwTFdRRK/wvV0dcyQo/Pauvx5bNEbTk="
}

priv_distributeRawTransaction

Distributes a signed, RLP encoded private transaction.

Tip

If you want to sign the privacy marker transaction outside of Besu, use priv_distributeRawTransaction instead of eea_sendRawTransaction.

Parameters

transaction: string - signed RLP-encoded private transaction

Returns

result: string - 32-byte enclave key (the enclave key is a pointer to the private transaction in Tessera.)

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"priv_distributeRawTransaction","params": ["0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833"], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"priv_distributeRawTransaction","params": ["0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833"], "id":1}
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": "0xfd0d90ab824574abc19c0776ca0210e764561d0ef6d621f2bbbea316eccfe56b"
}

priv_findPrivacyGroup

Returns a list of privacy groups containing only the listed members. For example, if the listed members are A and B, a privacy group containing A, B, and C is not returned.

Parameters

members: array of strings - members specified by Tessera public keys

Returns

result: array of objects - privacy group objects containing only the specified members; privacy groups are EEA-compliant or Besu-extended with types:

  • LEGACY for EEA-compliant groups.

  • PANTHEON for Besu-extended groups.

Example

curl -X POST --data '{"jsonrpc": "2.0","method": "priv_findPrivacyGroup","params": [["negmDcN2P4ODpqn/6WkJ02zT/0w0bjhGpkZ8UP6vARk=", "g59BmTeJIn7HIcnq8VQWgyh/pDbvbt2eyP0Ii60aDDw="]],"id": 1}' http://127.0.0.1:8545
{"jsonrpc": "2.0","method": "priv_findPrivacyGroup","params": [["negmDcN2P4ODpqn/6WkJ02zT/0w0bjhGpkZ8UP6vARk=", "g59BmTeJIn7HIcnq8VQWgyh/pDbvbt2eyP0Ii60aDDw="]],"id": 1}
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": [
  {
    "privacyGroupId": "GpK3ErNO0xF27T0sevgkJ3+4qk9Z+E3HtXYxcKIBKX8=",
    "name": "Group B",
    "description": "Description of Group B",
    "type": "PANTHEON",
    "members": [
      "negmDcN2P4ODpqn/6WkJ02zT/0w0bjhGpkZ8UP6vARk=",
      "g59BmTeJIn7HIcnq8VQWgyh/pDbvbt2eyP0Ii60aDDw="
    ]
  }
]
}

priv_getCode

Returns the code of the private smart contract at the specified address. Compiled smart contract code is stored as a hexadecimal value.

Parameters

  • privacyGroupId: string - 32-byte privacy Group ID

  • address: string - 20-byte contract address

  • blockNumber: string - integer representing a block number or one of the string tags latest, earliest, or pending, as described in Block Parameter

Returns

result: data - code stored at the specified address

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"priv_getCode","params":["1lJxSIP4JOp6uRn9wYsPeWwqoOP1c4nPQjylB4FExUA=", "0xeaf1c1bd00ef0bec5e39fba81740f1c5d05aa201", "latest"],"id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"priv_getCode","params":["1lJxSIP4JOp6uRn9wYsPeWwqoOP1c4nPQjylB4FExUA=", "0xeaf1c1bd00ef0bec5e39fba81740f1c5d05aa201", "latest"],"id":1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": "0x60806040526004361060485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416633fa4f2458114604d57806355241077146071575b600080fd5b348015605857600080fd5b50605f6088565b60408051918252519081900360200190f35b348015607c57600080fd5b506086600435608e565b005b60005481565b60008190556040805182815290517f199cd93e851e4c78c437891155e2112093f8f15394aa89dab09e38d6ca0727879181900360200190a1505600a165627a7a723058209d8929142720a69bde2ab3bfa2da6217674b984899b62753979743c0470a2ea70029"
}

priv_getEeaTransactionCount

Returns the private transaction count for the specified account and group of sender and recipients.

Important

If sending more than one transaction to be mined in the same block (that is, you are not waiting for the transaction receipt), you must calculate the private transaction nonce outside Besu instead of using priv_getEeaTransactionCount.

Parameters

  • address: string - account address

  • sender: string - base64-encoded Tessera address of the sender

  • recipients: array of strings - base64-encoded Tessera addresses of recipients

Returns

result: string - integer representing the number of private transactions sent from the address to the specified group of sender and recipients

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"priv_getEeaTransactionCount","params":["0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", "GGilEkXLaQ9yhhtbpBT03Me9iYa7U/mWXxrJhnbl1XY=", ["KkOjNLmCI6r+mICrC6l+XuEDjFEzQllaMQMpWLl4y1s=","eLb69r4K8/9WviwlfDiZ4jf97P9czyS3DkKu0QYGLjg="]], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"priv_getEeaTransactionCount","params":["0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", "GGilEkXLaQ9yhhtbpBT03Me9iYa7U/mWXxrJhnbl1XY=", ["KkOjNLmCI6r+mICrC6l+XuEDjFEzQllaMQMpWLl4y1s=","eLb69r4K8/9WviwlfDiZ4jf97P9czyS3DkKu0QYGLjg="]], "id":1}
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": "0x1"
}

priv_getFilterChanges

Polls the specified filter for a private contract and returns an array of changes that have occurred since the last poll.

Filters for private contracts can only be created by priv_newFilter so unlike eth_getFilterChanges, priv_getFilterChanges always returns an array of log objects or an empty list.

Parameters

  • privacyGroupId: string - 32-byte privacy Group ID

  • filterId: string - filter ID

Returns

result: array of objects - list of log objects, or an empty list if nothing has changed since the last poll

Example

curl -X POST --data '{"jsonrpc": "2.0","method": "priv_getFilterChanges","params": ["4rFldHM792LeP/e2WPkTXZedjwKuTr/KwCFTt6mBbkI=","0x4a35b92809d73f4f53a2355d62125442"],"id": 1}' http://127.0.0.1:8545
{"jsonrpc": "2.0","method": "priv_getFilterChanges","params": ["4rFldHM792LeP/e2WPkTXZedjwKuTr/KwCFTt6mBbkI=","0x4a35b92809d73f4f53a2355d62125442"],"id": 1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": [
        {
            "logIndex": "0x0",
            "removed": false,
            "blockNumber": "0x4d0",
            "blockHash": "0x1c8200667a869e99b945374c37277b5ee7a7ae67943e13c82563381387553dbb",
            "transactionHash": "0xb1966b9b372ba68952f48f3a3e78f036f5ae82ceca2de972a782d07fb88f6d88",
            "transactionIndex": "0x0",
            "address": "0x991cc548c154b2953cc48c02f782e1314097dfbb",
            "data": "0x",
            "topics": [
                "0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410",
                "0x0000000000000000000000000000000000000000000000000000000000000002"
            ]
        }
    ]
}

priv_getFilterLogs

Returns an array of logs for the specified filter for a private contract.

For private contracts, priv_getFilterLogs is the same as eth_getFilterLogs for public contracts except there’s no automatic log bloom caching for private contracts.

Note

priv_getFilterLogs is only used for filters created with priv_newFilter. To specify a filter object and get logs without creating a filter, use priv_getLogs.

Parameters

  • privacyGroupId: string - 32-byte privacy Group ID

  • filterId: string - filter ID

Returns

result: array of objects - list of log objects

Example

curl -X POST --data '{"jsonrpc": "2.0","method": "priv_getFilterLogs","params":["4rFldHM792LeP/e2WPkTXZedjwKuTr/KwCFTt6mBbkI=","0x4a35b92809d73f4f53a2355d62125442"],"id": 1}' http://127.0.0.1:8545
{"jsonrpc": "2.0","method": "priv_getFilterLogs","params":["4rFldHM792LeP/e2WPkTXZedjwKuTr/KwCFTt6mBbkI=","0x4a35b92809d73f4f53a2355d62125442"],"id": 1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": [
        {
            "logIndex": "0x0",
            "removed": false,
            "blockNumber": "0x493",
            "blockHash": "0xd9cb3a852e1e02c95f035a2e32d57f82c10cab61faa3e8f5c010adf979bb4786",
            "transactionHash": "0x78866dc51fdf189d8cca74f6a8fe54f172348fbd2163bbe80fa8b106cfc7deb4",
            "transactionIndex": "0x0",
            "address": "0x991cc548c154b2953cc48c02f782e1314097dfbb",
            "data": "0x",
            "topics": [
                "0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410",
                "0x0000000000000000000000000000000000000000000000000000000000000001"
            ]
        },
        {
            "logIndex": "0x0",
            "removed": false,
            "blockNumber": "0x4d0",
            "blockHash": "0x1c8200667a869e99b945374c37277b5ee7a7ae67943e13c82563381387553dbb",
            "transactionHash": "0xb1966b9b372ba68952f48f3a3e78f036f5ae82ceca2de972a782d07fb88f6d88",
            "transactionIndex": "0x0",
            "address": "0x991cc548c154b2953cc48c02f782e1314097dfbb",
            "data": "0x",
            "topics": [
                "0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410",
                "0x0000000000000000000000000000000000000000000000000000000000000002"
            ]
        }
    ]
}

priv_getLogs

Returns an array of logs matching a specified filter object.

For private contracts, priv_getLogs is the same as eth_getLogs for public contracts except there is no automatic log bloom caching for private contracts.

Parameters

Returns

result: array of objects - list of log objects

Example

curl -X POST --data '{"jsonrpc": "2.0","method": "priv_getLogs","params":["vGy/TZgO6y8VPMVeJAQ99MF1NaTf5ohA3TFfzoEF71k=",{"fromBlock": "earliest","toBlock": "latest","addresses": ["0x630c507ff633312087dc33c513b66276abcd2fc3"],"topics": ["0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410"]}],"id": 1}' http://127.0.0.1:8545
{"jsonrpc": "2.0","method": "priv_getLogs","params":["vGy/TZgO6y8VPMVeJAQ99MF1NaTf5ohA3TFfzoEF71k=",{"fromBlock": "earliest","toBlock": "latest","addresses": ["0x630c507ff633312087dc33c513b66276abcd2fc3"],"topics": ["0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410"]}],"id": 1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": [
        {
            "logIndex": "0x0",
            "removed": false,
            "blockNumber": "0x342",
            "blockHash": "0xf5954f068fa2f2f7741281e8c753a8e92047e27ab3c4971836d2c89fab86d92b",
            "transactionHash": "0xa9ba5cffde9d4ad8997c5c4352d5d49eeea0e9def8a4ea69991b8837c49d4e4f",
            "transactionIndex": "0x0",
            "address": "0x630c507ff633312087dc33c513b66276abcd2fc3",
            "data": "0x",
            "topics": [
                "0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410",
                "0x0000000000000000000000000000000000000000000000000000000000000001"
            ]
        },
        {
            "logIndex": "0x0",
            "removed": false,
            "blockNumber": "0x383",
            "blockHash": "0x91b73a47d53e3a88d62ed091a89a4be7557ad91b552e7ff7d86bf78977d5d45d",
            "transactionHash": "0xc2a185faf00e87434e55b7f70cc4c38be354c2128b4b96b5f5def0b54a2173ec",
            "transactionIndex": "0x0",
            "address": "0x630c507ff633312087dc33c513b66276abcd2fc3",
            "data": "0x",
            "topics": [
                "0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410",
                "0x0000000000000000000000000000000000000000000000000000000000000002"
            ]
        }
    ]
}

priv_getPrivacyPrecompileAddress

Returns the address of the privacy precompiled contract. The address is derived and based on the value of the privacy-flexible-groups-enabled option.

Parameters

None

Returns

result: string - address of the privacy precompile

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"priv_getPrivacyPrecompileAddress","params":[], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"priv_getPrivacyPrecompileAddress","params":[], "id":1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": "0x000000000000000000000000000000000000007e"
}

priv_getPrivateTransaction

Returns the private transaction if you are a participant, otherwise, null.

Parameters

transaction: string - transaction hash returned by eea_sendRawTransaction or eea_sendTransaction.

Returns

result: object - private transaction object, or null if not a participant in the private transaction

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"priv_getPrivateTransaction","params":["0x623c4ce5275a87b91f4f1c521012d39ca19311c787bde405490f4c0426a71498"], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"priv_getPrivateTransaction","params":["0x623c4ce5275a87b91f4f1c521012d39ca19311c787bde405490f4c0426a71498"], "id":1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {
        "from": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73",
        "gas": "0x2dc6c0",
        "gasPrice": "0x0",
        "hash": "0x623c4ce5275a87b91f4f1c521012d39ca19311c787bde405490f4c0426a71498",
        "input": "0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610221806100606000396000f300608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633fa4f2451461005c5780636057361d1461008757806367e404ce146100b4575b600080fd5b34801561006857600080fd5b5061007161010b565b6040518082815260200191505060405180910390f35b34801561009357600080fd5b506100b260048036038101908080359060200190929190505050610115565b005b3480156100c057600080fd5b506100c96101cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600254905090565b7fc9db20adedc6cf2b5d25252b101ab03e124902a73fcb12b753f3d1aaa2d8f9f53382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a18060028190555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058208efaf938851fb2d235f8bf9a9685f149129a30fe0f4b20a6c1885dc02f639eba0029",
        "nonce": "0x0",
        "to": null,
        "value": "0x0",
        "v": "0xfe8",
        "r": "0x654a6a9663ca70bb13e27cca14b3777cc92da184e19a151cdeef2ccbbd5c6405",
        "s": "0x5dd4667b020c8a5af7ae28d4c3126f8dcb1187f49dcf0de9d7a39b1651892eef",
        "privateFrom": "negmDcN2P4ODpqn/6WkJ02zT/0w0bjhGpkZ8UP6vARk=",
        "privateFor": [
            "g59BmTeJIn7HIcnq8VQWgyh/pDbvbt2eyP0Ii60aDDw="
        ],
        "restriction": "restricted"
    }
}

priv_getTransactionCount

Returns the private transaction count for specified account and privacy group.

Important

If sending more than one transaction to be mined in the same block (that is, you are not waiting for the transaction receipt), you must calculate the private transaction nonce outside Besu instead of using priv_getTransactionCount.

Parameters

  • address: string - account address

  • privacyGroupId: string - privacy group ID

Returns

result: string - integer representing the number of private transactions sent from the address to the specified privacy group

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"priv_getTransactionCount","params":["0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", "kAbelwaVW7okoEn1+okO+AbA4Hhz/7DaCOWVQz9nx5M="], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"priv_getTransactionCount","params":["0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", "kAbelwaVW7okoEn1+okO+AbA4Hhz/7DaCOWVQz9nx5M="], "id":1}
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": "0x1"
}

priv_getTransactionReceipt

Returns information about the private transaction after mining the transaction. Receipts for pending transactions are not available.

Parameters

transaction: string - 32-byte hash of a transaction

Returns

result: object - private Transaction receipt object, or null if no receipt found

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"priv_getTransactionReceipt","params":["0xf3ab9693ad92e277bf785e1772f29fb1864904bbbe87b0470455ddb082caab9d"],"id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"priv_getTransactionReceipt","params":["0xf3ab9693ad92e277bf785e1772f29fb1864904bbbe87b0470455ddb082caab9d"],"id":1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {
        "blockHash": "0xe7212a92cfb9b06addc80dec2a0dfae9ea94fd344efeb157c41e12994fcad60a",
        "blockNumber": "0x50",
        "contractAddress": "0x493b76031593402e24e16faa81f677b58e2d53f3",
        "from": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73",
        "logs": [],
        "to": "0xf17f52151ebef6c7334fad080c5704d77216b732",
        "transactionHash": "0x36219e92b5f53d4150aa9ef7d2d793118cced523de6724100da5b534e3ceb4b8",
        "transactionIndex": "0x0",
        "output": "0x6080604052600436106049576000357c010000000000000000000000000000000000000000000
        0000000000000900463ffffffff1680633fa4f24514604e57806355241077146076575b600080fd5b3480156059
        57600080fd5b50606060a0565b6040518082815260200191505060405180910390f35b348015608157600080fd5b
        50609e6004803603810190808035906020019092919050505060a6565b005b60005481565b8060008190555050560
        0a165627a7a723058202bdbba2e694dba8fff33d9d0976df580f57bff0a40e25a46c398f8063b4c00360029",
        "commitmentHash": "0x79b9e6b0856db398ad7dc208f15b1d38c0c0b0c5f99e4a443a2c5a85510e96a5",
        "status": "0x1",
        "privateFrom": "negmDcN2P4ODpqn/6WkJ02zT/0w0bjhGpkZ8UP6vARk=",
        "privacyGroupId": "cD636RZlcqVSpoxT/ExbkWQfBO7kPAZO0QlWHErNSL8=",
        "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    }
}

priv_newFilter

Creates a log filter for a private contract. To poll for logs associated with the created filter, use priv_getFilterChanges. To get all logs associated with the filter, use priv_getFilterLogs.

For private contracts, priv_newFilter is the same as eth_newFilter for public contracts.

Parameters

Note

fromBlock and toBlock in the filter options object default to latest.

Returns

result: string - filter ID

Example

curl -X POST --data '{"jsonrpc": "2.0","method": "priv_newFilter","params": ["4rFldHM792LeP/e2WPkTXZedjwKuTr/KwCFTt6mBbkI=",{"fromBlock": "earliest","toBlock": "latest","addresses": ["0x991cc548c154b2953cc48c02f782e1314097dfbb"],"topics": ["0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410"]}],"id": 1}' http://127.0.0.1:8545
{"jsonrpc": "2.0","method": "priv_newFilter","params": ["4rFldHM792LeP/e2WPkTXZedjwKuTr/KwCFTt6mBbkI=",{"fromBlock": "earliest","toBlock": "latest","addresses": ["0x991cc548c154b2953cc48c02f782e1314097dfbb"],"topics": ["0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410"]}],"id": 1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": "0x4a35b92809d73f4f53a2355d62125442"
}

priv_uninstallFilter

Uninstalls a filter for a private contract with the specified ID. When a filter is no longer required, call this method.

Filters time out when not requested by priv_getFilterChanges or priv_getFilterLogs for 10 minutes.

For private contracts, priv_uninstallFilter is the same as eth_uninstallFilter for public contracts.

Parameters

  • privacyGroupId: string - 32-byte privacy group ID

  • filterId: string - filter ID

Returns

result: boolean - indicates if the filter is successfully uninstalled

Example

curl -X POST --data '{"jsonrpc": "2.0","method": "priv_uninstallFilter","params":["4rFldHM792LeP/e2WPkTXZedjwKuTr/KwCFTt6mBbkI=","0x4a35b92809d73f4f53a2355d62125442"],"id": 1}' http://127.0.0.1:8545
{"jsonrpc": "2.0","method": "priv_uninstallFilter","params":["4rFldHM792LeP/e2WPkTXZedjwKuTr/KwCFTt6mBbkI=","0x4a35b92809d73f4f53a2355d62125442"],"id": 1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": true
}

QBFT methods

The QBFT API methods provide access to the QBFT consensus engine.

Note

The QBFT API methods are not enabled by default for JSON-RPC. To enable the QBFT API methods, use the --rpc-http-api or --rpc-ws-api options.

qbft_discardValidatorVote

Discards a proposal to add or remove a validator with the specified address.

Parameters

address: string - 20-byte address of proposed validator

Returns

result: boolean - indicates if the proposal is discarded

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"qbft_discardValidatorVote","params":["0xef1bfb6a12794615c9b0b5a21e6741f01e570185"], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"qbft_discardValidatorVote","params":["0xef1bfb6a12794615c9b0b5a21e6741f01e570185"], "id":1}
{
  "jsonrpc" : "2.0",
  "id" : 1,
  "result" : true
}

qbft_getPendingVotes

Returns votes cast in the current epoch.

Parameters

None

Returns

result: map of strings to booleans - map of account addresses to corresponding boolean values indicating the vote for each account; if true, the vote is to add a validator. If false, the proposal is to remove a validator.

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"qbft_getPendingVotes","params":[], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"qbft_getPendingVotes","params":[], "id":1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {
        "0xef1bfb6a12794615c9b0b5a21e6741f01e570185": true,
        "0x42d4287eac8078828cf5f3486cfe601a275a49a5": true
    }
}

qbft_getSignerMetrics

Provides the following validator metrics for the specified range:

  • Number of blocks from each validator

  • Block number of the last block proposed by each validator (if any proposed in the specified range)

  • All validators present in the last block of the range

Parameters

  • fromBlockNumber: string - integer representing a block number or the string tag earliest as described in Block Parameter

  • toBlockNumber: string - integer representing a block number or one of the string tags latest or pending, as described in Block Parameter

If you specify:

  • No parameters, the call provides metrics for the last 100 blocks, or all blocks if there are less than 100 blocks.

  • Only the first parameter, the call provides metrics for all blocks from the block specified to the latest block.

Returns

result: array of objects - list of validator objects

Note

The proposer of the genesis block has address 0x0000000000000000000000000000000000000000.

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"qbft_getSignerMetrics","params":["1", "100"], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"qbft_getSignerMetrics","params":["1", "100"], "id":1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": [
        {
            "address": "0x7ffc57839b00206d1ad20c69a1981b489f772031",
            "proposedBlockCount": "0x21",
            "lastProposedBlockNumber": "0x61"
        },
        {
            "address": "0x42eb768f2244c8811c63729a21a3569731535f06",
            "proposedBlockCount": "0x21",
            "lastProposedBlockNumber": "0x63"
        },
        {
            "address": "0xb279182d99e65703f0076e4812653aab85fca0f0",
            "proposedBlockCount": "0x21",
            "lastProposedBlockNumber": "0x62"
        }
    ]
}

qbft_getValidatorsByBlockHash

Lists the validators defined in the specified block.

Parameters

block: string - 32-byte block hash

Returns

result: array of strings - list of validator addresses

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"qbft_getValidatorsByBlockHash","params":["0xbae7d3feafd743343b9a4c578cab5e5d65eb735f6855fb845c00cab356331256"], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"qbft_getValidatorsByBlockHash","params":["0xbae7d3feafd743343b9a4c578cab5e5d65eb735f6855fb845c00cab356331256"], "id":1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": [
        "0x42d4287eac8078828cf5f3486cfe601a275a49a5",
        "0xb1b2bc9582d2901afdc579f528a35ca41403fa85",
        "0xef1bfb6a12794615c9b0b5a21e6741f01e570185"
    ]
}

qbft_getValidatorsByBlockNumber

Lists the validators defined in the specified block.

Parameters

  • blockNumber: string - integer representing a block number or one of the string tags latest, earliest, or pending, as described in Block Parameter

Returns

result: array of strings - list of validator addresses

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"qbft_getValidatorsByBlockNumber","params":["latest"], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"qbft_getValidatorsByBlockNumber","params":["latest"], "id":1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": [
        "0x42d4287eac8078828cf5f3486cfe601a275a49a5",
        "0xb1b2bc9582d2901afdc579f528a35ca41403fa85",
        "0xef1bfb6a12794615c9b0b5a21e6741f01e570185"
    ]
}

qbft_proposeValidatorVote

Proposes to add or remove a validator with the specified address.

Parameters

  • address: string - account address

  • proposal: boolean - true to propose adding validator or false to propose removing validator

Returns

result: boolean - true

Example

curl -X POST --data '{"jsonrpc":"2.0","method":"qbft_proposeValidatorVote","params":["42d4287eac8078828cf5f3486cfe601a275a49a5",true], "id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","method":"qbft_proposeValidatorVote","params":["42d4287eac8078828cf5f3486cfe601a275a49a5",true], "id":1}
{
  "jsonrpc" : "2.0",
  "id" : 1,
  "result" : true
}