Whiteflag API Connector for Ethereum
The Whiteflag API natively supports the Ethereum blockchain.
NOTE - The Ethereum module needs updating.
Blockchain specifications
| Whiteflag message embedding: | data field |
| Maximum message length: | dynamic |
| Signature algorithm: | ECDSA secp256k1 |
| Transaction hash: | 256 bits (64 hexadecimals) |
| Secret for account creation: | private key |
Note that curve secp256k1 for the ECDSA signature algorthm is officially not
specified to be used with JWS for Whiteflag authentication method 1. Instead,
the JWS specification in RFC 7518
requires curve secp256r1 a.k.a. prime256v1. However, Whiteflag is using
JSON Web Tokens just as a structure. For Whiteflag authentication method 1 to
work, it is essential that the key pair and curve of the blockchain is used for
the signature to prove possession of the associated secret key.
See also Issue 28.
Ethereum configuration
The blockchains configuration file config/blockchains.toml should contain
the Ethereum specific parameters in one of its [[blockchains]] sections.
name: the name according to the naming convention:{name}-{network}, e.g.ethereum-mainorethereum-rinkebymodule: the Ethereum module inlib/blockchains, which should be “ethereum”chainID: the appropriate Chain ID for the Ethereum network that is usedactive: whether the blockchain is active or should be ignored
These parameters manage Ethereum blockchain accounts:
createAccount: whether to automatically create an account if none exists; default isfalse
For retrieving transactions containing Whiteflag messages from the blockchain, these parameters may be provided, otherwise default values are used:
blockRetrievalInterval: the time in milliseconds before the Ethereum listener tries to retireve the next block; the default is6000msblockRetrievalStart: the starting block from where to retrieve transactions; if0(default) the API resumes a number of blocks before the highest block as configured belowblockRetrievalEnd: the last block from where to retrieve transactions; if0(default) the API catches up with the highest block on the nodeblockRetrievalRestart: how many blocks before the current highest block the API should look back when (re)starting the API; this prevents that blocks are missed when the API is stopped for a short periodblockMaxRetries: how many times the API should retry to process a block if it fails, e.g. because of a node timeout; default is0, which means unlimited retriestransactionBatchSize: how many transactions from a single block the API may process in parallel; default is64transactionValue: the value of a transaction when sending a Whiteflag message; default is0ethertraceRawTransaction: whether to show each individual transaction when the loglevel is set to6(trace); default isfalsebecause this results in massive logging
To send and receive Whiteflag messages, the API must be connected to a Ethereum node exposing the standard Ethereum RPC interface. These parameters are used to configure the connection:
rpcTimeout: the timeout for an RPC request in milliseconds; the default is10000rpcProtocol: the protocol via which the RPC interface is available, usuallyhttporhttpsrpcHost: the hostname of the Ethereum noderpcPort: the port on which the RPC interface is exposedrpcPath: optional path to reach the RPC interfacerpcUsername: an optional username for basic http authorizationrpcPassword: an optional password for basic http authorization