Configuration

When creating a new Incubed Instance you can configure it. The Configuration depends on the registered plugins. This page describes the available configuration parameters.

chainId

the chainId or the name of a known chain. It defines the nodelist to connect to. This config is optional. (default: "mainnet")

Type: string | uint?

Possible Values are:

  • mainnet : Mainnet Chain
  • goerli : Goerli Testnet
  • ewc : Energy WebFoundation
  • btc : Bitcoin
  • ipfs : ipfs
  • local : local-chain

Example:

> in3 -c goerli  ....
> in3 --chainId=goerli  ....
const in3 = new IN3({
  "chainId": "goerli"
})
in3_configure(in3, "{\
         \"chainId\": \"goerli\"\
       }");
IN3 in3 = new IN3(new ClientConfiguration(JSON.parse("""
           {
             "chainId": "goerli"
           }
           """)));
let  in3 = IN3( chainId:  "goerli")

finality

the number in percent needed in order reach finality (% of signature of the validators). This config is optional.

Type: int?

Example:

> in3 -f 50  ....
> in3 --finality=50  ....
const in3 = new IN3({
  "finality": 50
})
in3_configure(in3, "{\
         \"finality\": 50\
       }");
IN3 in3 = new IN3(new ClientConfiguration(JSON.parse("""
           {
             "finality": 50
           }
           """)));
let  in3 = IN3( finality:  50)

includeCode

if true, the request should include the codes of all accounts. otherwise only the the codeHash is returned. In this case the client may ask by calling eth_getCode() afterwards. This config is optional.

Type: bool?

Example:

> in3 --includeCode  ....
const in3 = new IN3({
  "includeCode": true
})
in3_configure(in3, "{\
         \"includeCode\": true\
       }");
IN3 in3 = new IN3(new ClientConfiguration(JSON.parse("""
           {
             "includeCode": true
           }
           """)));
let  in3 = IN3( includeCode:  true)

debug

if true, debug messages will be written to stderr. This config is optional.

Type: bool?

Example:

> in3 --debug  ....
const in3 = new IN3({
  "debug": true
})
in3_configure(in3, "{\
         \"debug\": true\
       }");
IN3 in3 = new IN3(new ClientConfiguration(JSON.parse("""
           {
             "debug": true
           }
           """)));
let  in3 = IN3( debug:  true)

maxAttempts

max number of attempts in case a response is rejected. This config is optional. (default: 7)

Type: int?

Example:

> in3 -a 1  ....
> in3 --maxAttempts=1  ....
const in3 = new IN3({
  "maxAttempts": 1
})
in3_configure(in3, "{\
         \"maxAttempts\": 1\
       }");
IN3 in3 = new IN3(new ClientConfiguration(JSON.parse("""
           {
             "maxAttempts": 1
           }
           """)));
let  in3 = IN3( maxAttempts:  1)

keepIn3

if true, requests sent to the input sream of the comandline util will be send theor responses in the same form as the server did. This config is optional.

Type: bool?

Example:

> in3 -kin3  ....
> in3 --keepIn3  ....
const in3 = new IN3({
  "keepIn3": true
})
in3_configure(in3, "{\
         \"keepIn3\": true\
       }");
IN3 in3 = new IN3(new ClientConfiguration(JSON.parse("""
           {
             "keepIn3": true
           }
           """)));
let  in3 = IN3( keepIn3:  true)

stats

if true, requests sent will be used for stats. This config is optional. (default: true)

Type: bool?

Example:

> in3 --stats=false  ....
const in3 = new IN3({
  "stats": false
})
in3_configure(in3, "{\
         \"stats\": false\
       }");
IN3 in3 = new IN3(new ClientConfiguration(JSON.parse("""
           {
             "stats": false
           }
           """)));
let  in3 = IN3( stats:  false)

useBinary

if true the client will use binary format. This will reduce the payload of the responses by about 60% but should only be used for embedded systems or when using the API, since this format does not include the propertynames anymore. This config is optional.

Type: bool?

Example:

> in3 --useBinary  ....
const in3 = new IN3({
  "useBinary": true
})
in3_configure(in3, "{\
         \"useBinary\": true\
       }");
IN3 in3 = new IN3(new ClientConfiguration(JSON.parse("""
           {
             "useBinary": true
           }
           """)));
let  in3 = IN3( useBinary:  true)

experimental

if true the client allows to use use experimental features, otherwise a exception is thrown if those would be used. This config is optional.

Type: bool?

Example:

> in3 -x  ....
> in3 --experimental  ....
const in3 = new IN3({
  "experimental": true
})
in3_configure(in3, "{\
         \"experimental\": true\
       }");
IN3 in3 = new IN3(new ClientConfiguration(JSON.parse("""
           {
             "experimental": true
           }
           """)));
let  in3 = IN3( experimental:  true)

timeout

specifies the number of milliseconds before the request times out. increasing may be helpful if the device uses a slow connection. This config is optional. (default: 20000)

Type: uint64?

Example:

> in3 --timeout=100000  ....
const in3 = new IN3({
  "timeout": 100000
})
in3_configure(in3, "{\
         \"timeout\": 100000\
       }");
IN3 in3 = new IN3(new ClientConfiguration(JSON.parse("""
           {
             "timeout": 100000
           }
           """)));
let  in3 = IN3( timeout:  100000)

proof

if true the nodes should send a proof of the response. If set to none, verification is turned off completly. This config is optional. (default: "standard")

Type: string?

Possible Values are:

  • none : no proof will be generated or verfiied. This also works with standard rpc-endpoints.
  • standard : Stanbdard Proof means all important properties are verfiied
  • full : In addition to standard, also some rarly needed properties are verfied, like uncles. But this causes a bigger payload.

Example:

> in3 -p none  ....
> in3 --proof=none  ....
const in3 = new IN3({
  "proof": "none"
})
in3_configure(in3, "{\
         \"proof\": \"none\"\
       }");
IN3 in3 = new IN3(new ClientConfiguration(JSON.parse("""
           {
             "proof": "none"
           }
           """)));
let  in3 = IN3( proof:  "none")

replaceLatestBlock

if specified, the blocknumber latest will be replaced by blockNumber- specified value. This config is optional.

Type: int?

Example:

> in3 -l 6  ....
> in3 --replaceLatestBlock=6  ....
const in3 = new IN3({
  "replaceLatestBlock": 6
})
in3_configure(in3, "{\
         \"replaceLatestBlock\": 6\
       }");
IN3 in3 = new IN3(new ClientConfiguration(JSON.parse("""
           {
             "replaceLatestBlock": 6
           }
           """)));
let  in3 = IN3( replaceLatestBlock:  6)

autoUpdateList

if true the nodelist will be automaticly updated if the lastBlock is newer. This config is optional. (default: true)

Type: bool?

Example:

> in3 --autoUpdateList=false  ....
const in3 = new IN3({
  "autoUpdateList": false
})
in3_configure(in3, "{\
         \"autoUpdateList\": false\
       }");
IN3 in3 = new IN3(new ClientConfiguration(JSON.parse("""
           {
             "autoUpdateList": false
           }
           """)));
let  in3 = IN3( autoUpdateList:  false)

signatureCount

number of signatures requested in order to verify the blockhash. This config is optional. (default: 1)

Type: int?

Example:

> in3 -s 2  ....
> in3 --signatureCount=2  ....
const in3 = new IN3({
  "signatureCount": 2
})
in3_configure(in3, "{\
         \"signatureCount\": 2\
       }");
IN3 in3 = new IN3(new ClientConfiguration(JSON.parse("""
           {
             "signatureCount": 2
           }
           """)));
let  in3 = IN3( signatureCount:  2)

bootWeights

if true, the first request (updating the nodelist) will also fetch the current health status and use it for blacklisting unhealthy nodes. This is used only if no nodelist is availabkle from cache. This config is optional. (default: true)

Type: bool?

Example:

> in3 -bw  ....
> in3 --bootWeights  ....
const in3 = new IN3({
  "bootWeights": true
})
in3_configure(in3, "{\
         \"bootWeights\": true\
       }");
IN3 in3 = new IN3(new ClientConfiguration(JSON.parse("""
           {
             "bootWeights": true
           }
           """)));
let  in3 = IN3( bootWeights:  true)

useHttp

if true the client will try to use http instead of https. This config is optional.

Type: bool?

Example:

> in3 --useHttp  ....
const in3 = new IN3({
  "useHttp": true
})
in3_configure(in3, "{\
         \"useHttp\": true\
       }");
IN3 in3 = new IN3(new ClientConfiguration(JSON.parse("""
           {
             "useHttp": true
           }
           """)));
let  in3 = IN3( useHttp:  true)

minDeposit

min stake of the server. Only nodes owning at least this amount will be chosen. This config is optional.

Type: uint256?

Example:

> in3 --minDeposit=10000000  ....
const in3 = new IN3({
  "minDeposit": 10000000
})
in3_configure(in3, "{\
         \"minDeposit\": 10000000\
       }");
IN3 in3 = new IN3(new ClientConfiguration(JSON.parse("""
           {
             "minDeposit": 10000000
           }
           """)));
let  in3 = IN3( minDeposit:  10000000)

nodeProps

used to identify the capabilities of the node. This config is optional.

Type: hex?

Example:

> in3 --nodeProps=0xffff  ....
const in3 = new IN3({
  "nodeProps": "0xffff"
})
in3_configure(in3, "{\
         \"nodeProps\": \"0xffff\"\
       }");
IN3 in3 = new IN3(new ClientConfiguration(JSON.parse("""
           {
             "nodeProps": "0xffff"
           }
           """)));
let  in3 = IN3( nodeProps:  "0xffff")

requestCount

the number of request send in parallel when getting an answer. More request will make it more expensive, but increase the chances to get a faster answer, since the client will continue once the first verifiable response was received. This config is optional. (default: 2)

Type: int?

Example:

> in3 -rc 3  ....
> in3 --requestCount=3  ....
const in3 = new IN3({
  "requestCount": 3
})
in3_configure(in3, "{\
         \"requestCount\": 3\
       }");
IN3 in3 = new IN3(new ClientConfiguration(JSON.parse("""
           {
             "requestCount": 3
           }
           """)));
let  in3 = IN3( requestCount:  3)

rpc

url of one or more direct rpc-endpoints to use. (list can be comma seperated). If this is used, proof will automaticly be turned off. This config is optional.

Type: string?

Example:

> in3 --rpc=http://loalhost:8545  ....
const in3 = new IN3({
  "rpc": "http://loalhost:8545"
})
in3_configure(in3, "{\
         \"rpc\": \"http://loalhost:8545\"\
       }");
IN3 in3 = new IN3(new ClientConfiguration(JSON.parse("""
           {
             "rpc": "http://loalhost:8545"
           }
           """)));
let  in3 = IN3( rpc:  "http: //loalhost: 8545")

nodes

defining the nodelist. collection of JSON objects with chain Id (hex string) as key. This config is optional.

Type: object? The nodes object supports the following properties :

  • contract : address? (optional) - address of the registry contract. (This is the data-contract!)
  • whiteListContract : address? (optional) - address of the whiteList contract. This cannot be combined with whiteList!
  • whiteList : address[]? (optional) - manual whitelist.
  • registryId : bytes32? (optional) - identifier of the registry.
  • needsUpdate : bool? (optional) - if set, the nodeList will be updated before next request.
  • avgBlockTime : int? (optional) - average block time (seconds) for this chain.
  • verifiedHashes : object[]? (optional) - if the client sends an array of blockhashes the server will not deliver any signatures or blockheaders for these blocks, but only return a string with a number. This is automaticly updated by the cache, but can be overriden per request. The verifiedHashes object supports the following properties :
    • block : uint64 - block number
    • hash : bytes32 - verified hash corresponding to block number.
  • nodeList : object[]? (optional) - manual nodeList. As Value a array of Node-Definitions is expected. The nodeList object supports the following properties :
    • url : string - URL of the node.
    • address : string - address of the node
    • props : hex - used to identify the capabilities of the node (defaults to 0xFFFF).

Example:

> in3 --nodes.contract=0xac1b824795e1eb1f6e609fe0da9b9af8beaab60f  ....
const in3 = new IN3({
  "nodes": {
    "contract": "0xac1b824795e1eb1f6e609fe0da9b9af8beaab60f",
    "nodeList": [
      {
        "address": "0x45d45e6ff99e6c34a235d263965910298985fcfe",
        "url": "https://in3-v2.slock.it/mainnet/nd-1",
        "props": "0xFFFF"
      }
    ]
  }
})
in3_configure(in3, "{\
         \"nodes\": {\
           \"contract\": \"0xac1b824795e1eb1f6e609fe0da9b9af8beaab60f\",\
           \"nodeList\": [\
             {\
               \"address\": \"0x45d45e6ff99e6c34a235d263965910298985fcfe\",\
               \"url\": \"https://in3-v2.slock.it/mainnet/nd-1\",\
               \"props\": \"0xFFFF\"\
             }\
           ]\
         }\
       }");
IN3 in3 = new IN3(new ClientConfiguration(JSON.parse("""
           {
             "nodes": {
               "contract": "0xac1b824795e1eb1f6e609fe0da9b9af8beaab60f",
               "nodeList": [
                 {
                   "address": "0x45d45e6ff99e6c34a235d263965910298985fcfe",
                   "url": "https://in3-v2.slock.it/mainnet/nd-1",
                   "props": "0xFFFF"
                 }
               ]
             }
           }
           """)));
let  in3 = IN3( nodes:  {
           contract:  "0xac1b824795e1eb1f6e609fe0da9b9af8beaab60f",
           nodeList:  [
           address:  "0x45d45e6ff99e6c34a235d263965910298985fcfe",
           url:  "https: //in3-v2.slock.it/mainnet/nd-1",
           props:  "0xFFFF")

zksync

configuration for zksync-api ( only available if build with -DZKSYNC=true, which is on per default).

Type: object The zksync object supports the following properties :

  • provider_url : string? (optional) - url of the zksync-server (if not defined it will be choosen depending on the chain) (default: "https://api.zksync.io/jsrpc") This option can also be used in its short-form in the comandline client -zks .
  • rest_api : string? (optional) - url of the zksync rest api (if not defined it will be choosen depending on the chain) This option can also be used in its short-form in the comandline client -zkr .
> in3 -zkr https://rinkeby-api.zksync.io/api/v0.1/  ....
> in3 --zksync.rest_api=https://rinkeby-api.zksync.io/api/v0.1/  ....
  • account : address? (optional) - the account to be used. if not specified, the first signer will be used. This option can also be used in its short-form in the comandline client -zka .
  • sync_key : bytes32? (optional) - the seed used to generate the sync_key. This way you can explicitly set the pk instead of derriving it from a signer. This option can also be used in its short-form in the comandline client -zsk .
  • main_contract : address? (optional) - address of the main contract- If not specified it will be taken from the server.
  • signer_type : string? (optional) - type of the account. Must be either pk(default), contract (using contract signatures) or create2 using the create2-section. (default: "pk") Possible Values are:
    • pk : Private matching the account is used ( for EOA)
    • contract : Contract Signature based EIP 1271
    • create2 : create2 optionas are used

This option can also be used in its short-form in the comandline client -zkat .

  • musig_pub_keys : bytes? (optional) - concatenated packed public keys (32byte) of the musig signers. if set the pubkey and pubkeyhash will based on the aggregated pubkey. Also the signing will use multiple keys. This option can also be used in its short-form in the comandline client -zms .
  • musig_urls : string[]? (optional) - a array of strings with urls based on the musig_pub_keys. It is used so generate the combined signature by exchaing signature data (commitment and signatureshares) if the local client does not hold this key. This option can also be used in its short-form in the comandline client -zmu .
  • create2 : object? (optional) - create2-arguments for sign_type create2. This will allow to sign for contracts which are not deployed yet. This option can also be used in its short-form in the comandline client -zc2 . The create2 object supports the following properties :
    • creator : address - The address of contract or EOA deploying the contract ( for example the GnosisSafeFactory )
    • saltarg : bytes32 - a salt-argument, which will be added to the pubkeyhash and create the create2-salt.
    • codehash : bytes32 - the hash of the actual deploy-tx including the constructor-arguments.
  • verify_proof_method : string? (optional) - rpc-method, which will be used to verify the incomming proof before cosigning. This option can also be used in its short-form in the comandline client -zvpm .
  • create_proof_method : string? (optional) - rpc-method, which will be used to create the proof needed for cosigning. This option can also be used in its short-form in the comandline client -zcpm .

Example:

> in3 --zksync.account=0x995628aa92d6a016da55e7de8b1727e1eb97d337 --zksync.sync_key=0x9ad89ac0643ffdc32b2dab859ad0f9f7e4057ec23c2b17699c9b27eff331d816 --zksync.signer_type=contract  ....
const in3 = new IN3({
  "zksync": {
    "account": "0x995628aa92d6a016da55e7de8b1727e1eb97d337",
    "sync_key": "0x9ad89ac0643ffdc32b2dab859ad0f9f7e4057ec23c2b17699c9b27eff331d816",
    "signer_type": "contract"
  }
})
in3_configure(in3, "{\
         \"zksync\": {\
           \"account\": \"0x995628aa92d6a016da55e7de8b1727e1eb97d337\",\
           \"sync_key\": \"0x9ad89ac0643ffdc32b2dab859ad0f9f7e4057ec23c2b17699c9b27eff331d816\",\
           \"signer_type\": \"contract\"\
         }\
       }");
IN3 in3 = new IN3(new ClientConfiguration(JSON.parse("""
           {
             "zksync": {
               "account": "0x995628aa92d6a016da55e7de8b1727e1eb97d337",
               "sync_key": "0x9ad89ac0643ffdc32b2dab859ad0f9f7e4057ec23c2b17699c9b27eff331d816",
               "signer_type": "contract"
             }
           }
           """)));
let  in3 = IN3( zksync:  {
           account:  "0x995628aa92d6a016da55e7de8b1727e1eb97d337",
           sync_key:  "0x9ad89ac0643ffdc32b2dab859ad0f9f7e4057ec23c2b17699c9b27eff331d816",
           signer_type:  "contract")
> in3 --zksync.account=0x995628aa92d6a016da55e7de8b1727e1eb97d337 --zksync.sync_key=0x9ad89ac0643ffdc32b2dab859ad0f9f7e4057ec23c2b17699c9b27eff331d816 --zksync.signer_type=create2  ....
const in3 = new IN3({
  "zksync": {
    "account": "0x995628aa92d6a016da55e7de8b1727e1eb97d337",
    "sync_key": "0x9ad89ac0643ffdc32b2dab859ad0f9f7e4057ec23c2b17699c9b27eff331d816",
    "signer_type": "create2",
    "create2": {
      "creator": "0x6487c3ae644703c1f07527c18fe5569592654bcb",
      "saltarg": "0xb90306e2391fefe48aa89a8e91acbca502a94b2d734acc3335bb2ff5c266eb12",
      "codehash": "0xd6af3ee91c96e29ddab0d4cb9b5dd3025caf84baad13bef7f2b87038d38251e5"
    }
  }
})
in3_configure(in3, "{\
         \"zksync\": {\
           \"account\": \"0x995628aa92d6a016da55e7de8b1727e1eb97d337\",\
           \"sync_key\": \"0x9ad89ac0643ffdc32b2dab859ad0f9f7e4057ec23c2b17699c9b27eff331d816\",\
           \"signer_type\": \"create2\",\
           \"create2\": {\
             \"creator\": \"0x6487c3ae644703c1f07527c18fe5569592654bcb\",\
             \"saltarg\": \"0xb90306e2391fefe48aa89a8e91acbca502a94b2d734acc3335bb2ff5c266eb12\",\
             \"codehash\": \"0xd6af3ee91c96e29ddab0d4cb9b5dd3025caf84baad13bef7f2b87038d38251e5\"\
           }\
         }\
       }");
IN3 in3 = new IN3(new ClientConfiguration(JSON.parse("""
           {
             "zksync": {
               "account": "0x995628aa92d6a016da55e7de8b1727e1eb97d337",
               "sync_key": "0x9ad89ac0643ffdc32b2dab859ad0f9f7e4057ec23c2b17699c9b27eff331d816",
               "signer_type": "create2",
               "create2": {
                 "creator": "0x6487c3ae644703c1f07527c18fe5569592654bcb",
                 "saltarg": "0xb90306e2391fefe48aa89a8e91acbca502a94b2d734acc3335bb2ff5c266eb12",
                 "codehash": "0xd6af3ee91c96e29ddab0d4cb9b5dd3025caf84baad13bef7f2b87038d38251e5"
               }
             }
           }
           """)));
let  in3 = IN3( zksync:  {
           account:  "0x995628aa92d6a016da55e7de8b1727e1eb97d337",
           sync_key:  "0x9ad89ac0643ffdc32b2dab859ad0f9f7e4057ec23c2b17699c9b27eff331d816",
           signer_type:  "create2",
           create2:  {
           creator:  "0x6487c3ae644703c1f07527c18fe5569592654bcb",
           saltarg:  "0xb90306e2391fefe48aa89a8e91acbca502a94b2d734acc3335bb2ff5c266eb12",
           codehash:  "0xd6af3ee91c96e29ddab0d4cb9b5dd3025caf84baad13bef7f2b87038d38251e5")
> in3 --zksync.account=0x995628aa92d6a016da55e7de8b1727e1eb97d337 --zksync.signer_type=pk --zksync.musig_pub_keys=0x9ad89ac0643ffdc32b2dab859ad0f9f7e4057ec23c2b17699c9b27eff331d8160x9ad89ac0643ffdc32b2dab859ad0f9f7e4057ec23c2b17699c9b27eff331d816 --zksync.sync_key=0xe8f2ee64be83c0ab9466b0490e4888dbf5a070fd1d82b567e33ebc90457a5734  ....
const in3 = new IN3({
  "zksync": {
    "account": "0x995628aa92d6a016da55e7de8b1727e1eb97d337",
    "signer_type": "pk",
    "musig_pub_keys": "0x9ad89ac0643ffdc32b2dab859ad0f9f7e4057ec23c2b17699c9b27eff331d8160x9ad89ac0643ffdc32b2dab859ad0f9f7e4057ec23c2b17699c9b27eff331d816",
    "sync_key": "0xe8f2ee64be83c0ab9466b0490e4888dbf5a070fd1d82b567e33ebc90457a5734",
    "musig_urls": [
      null,
      "https://approver.service.com"
    ]
  }
})
in3_configure(in3, "{\
         \"zksync\": {\
           \"account\": \"0x995628aa92d6a016da55e7de8b1727e1eb97d337\",\
           \"signer_type\": \"pk\",\
           \"musig_pub_keys\": \"0x9ad89ac0643ffdc32b2dab859ad0f9f7e4057ec23c2b17699c9b27eff331d8160x9ad89ac0643ffdc32b2dab859ad0f9f7e4057ec23c2b17699c9b27eff331d816\",\
           \"sync_key\": \"0xe8f2ee64be83c0ab9466b0490e4888dbf5a070fd1d82b567e33ebc90457a5734\",\
           \"musig_urls\": [\
             null,\
             \"https://approver.service.com\"\
           ]\
         }\
       }");
IN3 in3 = new IN3(new ClientConfiguration(JSON.parse("""
           {
             "zksync": {
               "account": "0x995628aa92d6a016da55e7de8b1727e1eb97d337",
               "signer_type": "pk",
               "musig_pub_keys": "0x9ad89ac0643ffdc32b2dab859ad0f9f7e4057ec23c2b17699c9b27eff331d8160x9ad89ac0643ffdc32b2dab859ad0f9f7e4057ec23c2b17699c9b27eff331d816",
               "sync_key": "0xe8f2ee64be83c0ab9466b0490e4888dbf5a070fd1d82b567e33ebc90457a5734",
               "musig_urls": [
                 null,
                 "https://approver.service.com"
               ]
             }
           }
           """)));
let  in3 = IN3( zksync:  {
           account:  "0x995628aa92d6a016da55e7de8b1727e1eb97d337",
           signer_type:  "pk",
           musig_pub_keys:  "0x9ad89ac0643ffdc32b2dab859ad0f9f7e4057ec23c2b17699c9b27eff331d8160x9ad89ac0643ffdc32b2dab859ad0f9f7e4057ec23c2b17699c9b27eff331d816",
           sync_key:  "0xe8f2ee64be83c0ab9466b0490e4888dbf5a070fd1d82b567e33ebc90457a5734",
           musig_urls:  [
           https: //approver.service.com")

key

the client key to sign requests. (only availble if build with -DPK_SIGNER=true , which is on per default) This config is optional.

Type: bytes32?

Example:

> in3 -k 0xc9564409cbfca3f486a07996e8015124f30ff8331fc6dcbd610a050f1f983afe  ....
> in3 --key=0xc9564409cbfca3f486a07996e8015124f30ff8331fc6dcbd610a050f1f983afe  ....
const in3 = new IN3({
  "key": "0xc9564409cbfca3f486a07996e8015124f30ff8331fc6dcbd610a050f1f983afe"
})
in3_configure(in3, "{\
         \"key\": \"0xc9564409cbfca3f486a07996e8015124f30ff8331fc6dcbd610a050f1f983afe\"\
       }");
IN3 in3 = new IN3(new ClientConfiguration(JSON.parse("""
           {
             "key": "0xc9564409cbfca3f486a07996e8015124f30ff8331fc6dcbd610a050f1f983afe"
           }
           """)));
let  in3 = IN3( key:  "0xc9564409cbfca3f486a07996e8015124f30ff8331fc6dcbd610a050f1f983afe")

pk

registers raw private keys as signers for transactions. (only availble if build with -DPK_SIGNER=true , which is on per default) This config is optional.

Type: bytes32[]?

Example:

> in3 -pk 0xc9564409cbfca3f486a07996e8015124f30ff8331fc6dcbd610a050f1f983afe  ....
> in3 --pk=0xc9564409cbfca3f486a07996e8015124f30ff8331fc6dcbd610a050f1f983afe  ....
const in3 = new IN3({
  "pk": "0xc9564409cbfca3f486a07996e8015124f30ff8331fc6dcbd610a050f1f983afe"
})
in3_configure(in3, "{\
         \"pk\": \"0xc9564409cbfca3f486a07996e8015124f30ff8331fc6dcbd610a050f1f983afe\"\
       }");
IN3 in3 = new IN3(new ClientConfiguration(JSON.parse("""
           {
             "pk": "0xc9564409cbfca3f486a07996e8015124f30ff8331fc6dcbd610a050f1f983afe"
           }
           """)));
let  in3 = IN3( pk:  "0xc9564409cbfca3f486a07996e8015124f30ff8331fc6dcbd610a050f1f983afe")

btc

configure the Bitcoin verification

Type: object The btc object supports the following properties :

  • maxDAP : int? (optional) - max number of DAPs (Difficulty Adjustment Periods) allowed when accepting new targets. (default: 20)
> in3 --btc.maxDAP=10  ....
  • maxDiff : int? (optional) - max increase (in percent) of the difference between targets when accepting new targets. (default: 10)
> in3 --btc.maxDiff=5  ....

Example:

> in3 --btc.maxDAP=30 --btc.maxDiff=5  ....
const in3 = new IN3({
  "btc": {
    "maxDAP": 30,
    "maxDiff": 5
  }
})
in3_configure(in3, "{\
         \"btc\": {\
           \"maxDAP\": 30,\
           \"maxDiff\": 5\
         }\
       }");
IN3 in3 = new IN3(new ClientConfiguration(JSON.parse("""
           {
             "btc": {
               "maxDAP": 30,
               "maxDiff": 5
             }
           }
           """)));
let  in3 = IN3( btc:  {
           maxDAP:  30,
           maxDiff:  5)

cmdline options

Those special options are used in the comandline client to pass additional options.

clearCache

clears the cache before performing any operation.

Type: bool

Example:

> in3 -ccache  ....
> in3 --clearCache  ....

eth

converts the result (as wei) to ether.

Type: bool

Example:

> in3 -e  ....
> in3 --eth  ....

port

if specified it will run as http-server listening to the given port.

Type: uint

Example:

> in3 -port 8545  ....
> in3 --port=8545  ....

allowed-methods

only works if port is specified and declares a comma-seperated list of rpc-methods which are allowed. All other will be rejected.

Type: string

Example:

> in3 -am eth_sign,eth_blockNumber  ....
> in3 --allowed-methods=eth_sign,eth_blockNumber  ....

block

the blocknumber to use when making calls. could be either latest (default),earliest or a hexnumbner

Type: uint

Example:

> in3 -b latest  ....
> in3 --block=latest  ....

to

the target address of the call

Type: address

Example:

> in3 -to 0x7d1c10184fa178ebb5b10a9aa6230a255c5c59f6  ....
> in3 --to=0x7d1c10184fa178ebb5b10a9aa6230a255c5c59f6  ....

from

the sender of a call or tx (only needed if no signer is registered)

Type: address

Example:

> in3 -from 0x7d1c10184fa178ebb5b10a9aa6230a255c5c59f6  ....
> in3 --from=0x7d1c10184fa178ebb5b10a9aa6230a255c5c59f6  ....

data

the data for a transaction. This can be a filepath, a 0x-hexvalue or - for stdin.

Type: bytes

Example:

> in3 -d 0x7d1c101  ....
> in3 --data=0x7d1c101  ....

gas_price

the gas price to use when sending transactions. (default: use eth_gasPrice)

Type: uint

Example:

> in3 -gp 1000000000000  ....
> in3 --gas_price=1000000000000  ....

gas

the gas limit to use when sending transactions. (default: 100000)

Type: uint

Example:

> in3 -gas 100000  ....
> in3 --gas=100000  ....

token

the address of the erc20-token contract.

Type: string

nonce

the nonce. (default: will be fetched useing eth_getTransactionCount)

Type: uint

Example:

> in3 -nonce 2  ....
> in3 --nonce=2  ....

test

creates a new json-test written to stdout with the name as specified.

Type: string

Example:

> in3 -test test_blockNumber  ....
> in3 --test=test_blockNumber  ....

path

the HD wallet derivation path . We can pass in simplified way as hex string i.e [44,60,00,00,00] => 0x2c3c000000

Type: string

Example:

> in3 -path 0x2c3c000000  ....
> in3 --path=0x2c3c000000  ....

sigtype

the type of the signature data. (default: "raw")

Type: string

Possible Values are:

  • raw : hash the raw data
  • hash : use the already hashed data
  • eth_sign : use the prefix and hash it

Example:

> in3 -st hash  ....
> in3 --sigtype=hash  ....

password

password to unlock the key

Type: string

Example:

> in3 -pwd MYPASSWORD  ....
> in3 --password=MYPASSWORD  ....

value

the value to send when sending a transaction. can be hexvalue or a float/integer with the suffix eth or wei like 1.8eth (default: 0)

Type: uint

Example:

> in3 -value 0.2eth  ....
> in3 --value=0.2eth  ....

wait

if given, instead returning the transaction, it will wait until the transaction is mined and return the transactionreceipt.

Type: bool

Example:

> in3 -w  ....
> in3 --wait  ....

json

if given the result will be returned as json, which is especially important for eth_call results with complex structres.

Type: bool

Example:

> in3 -json  ....
> in3 --json  ....

hex

if given the result will be returned as hex.

Type: bool

Example:

> in3 -hex  ....
> in3 --hex  ....

debug

if given incubed will output debug information when executing.

Type: bool

Example:

> in3 -debug  ....
> in3 --debug  ....

quiet

quiet. no additional output.

Type: bool

Example:

> in3 -q  ....
> in3 --quiet  ....

human

human readable, which removes the json -structure and oly displays the values.

Type: bool

Example:

> in3 -h  ....
> in3 --human  ....

test-request

runs test request when showing in3_weights

Type: bool

Example:

> in3 -tr  ....
> in3 --test-request  ....

test-health-request

runs test request including health-check when showing in3_weights

Type: bool

Example:

> in3 -thr  ....
> in3 --test-health-request  ....

multisig

adds a multisig as signer this needs to be done in the right order! (first the pk then the multisaig(s) )

Type: address

Example:

> in3 -ms 0x7d1c10184fa178ebb5b10a9aa6230a255c5c59f6  ....
> in3 --multisig=0x7d1c10184fa178ebb5b10a9aa6230a255c5c59f6  ....

ms.signatures

add additional signatures, which will be useds when sending through a multisig!

Type: bytes

Example:

> in3 -sigs 8.270446144388933e+124  ....
> in3 --ms.signatures=8.270446144388933e+124  ....

response.in

read response from stdin

Type: bool

Example:

> in3 -ri  ....
> in3 --response.in  ....

response.out

write raw response to stdout

Type: bool

Example:

> in3 -ro  ....
> in3 --response.out  ....

file.in

reads a prerecorded request from the filepath and executes it with the recorded data. (great for debugging)

Type: string

Example:

> in3 -fi record.txt  ....
> in3 --file.in=record.txt  ....

file.out

records a request and writes the reproducable data in a file (including all cache-data, timestamps …)

Type: string

Example:

> in3 -fo record.txt  ....
> in3 --file.out=record.txt  ....

nodelist

a coma seperated list of urls (or address:url) to be used as fixed nodelist

Type: string

Example:

> in3 -nl https://in3-v2.slock.it/mainnet/nd-1,https://mainnet.incubed.net  ....
> in3 --nodelist=https://in3-v2.slock.it/mainnet/nd-1,https://mainnet.incubed.net  ....

bootnodes

a coma seperated list of urls (or address:url) to be used as boot nodes

Type: string

Example:

> in3 -bn https://in3-v2.slock.it/mainnet/nd-1,https://mainnet.incubed.net  ....
> in3 --bootnodes=https://in3-v2.slock.it/mainnet/nd-1,https://mainnet.incubed.net  ....

onlysign

only sign, do not send the raw Transaction

Type: bool

Example:

> in3 -os  ....
> in3 --onlysign  ....

noproof

alias for –proof=none

Type: bool

Example:

> in3 -np  ....
> in3 --noproof  ....

nostats

alias for –stats=false, which will mark all requests as not counting in the stats

Type: bool

Example:

> in3 -ns  ....
> in3 --nostats  ....

version

displays the version

Type: bool

Example:

> in3 -v  ....
> in3 --version  ....

help

displays this help message

Type: bool

Example:

> in3 -h  ....
> in3 --help  ....