Requirement | Autonity | Strato | Besu | Quorum | Wanchain |
---|---|---|---|---|---|
Requirement | Autonity | Strato | Besu | Quorum | Wanchain |
[P] SMRT-030: Enterprise Ethereum clients MUST support smart contracts of at least 24,576 bytes in size. | Yes | Yes | Yes | Yes | Yes |
[P] SMRT-040: Enterprise Ethereum clients MUST read and enforce a
size limit for smart contracts from the maxCodeSize parameter in
the network configuration, specified as a number of kilobytes.
|
No | ? | Yes | ? | |
[P] SMRT-060: Enterprise Ethereum clients MUST read and enforce a
size limit for smart contracts from the maxCodeSize parameter in
the network configuration, specified as a javascript object as defined in the section
The maxCodeSize parameter.
|
No | No | No | No | No |
[P] JRPC-010: Enterprise Ethereum clients MUST provide support for
the following Ethereum JSON-RPC API methods:
|
Yes | ? | Yes | Yes | ? |
[P] JRPC-007: Enterprise Ethereum clients SHOULD implement JSON-RPC-API methods to be backward compatible with the definitions given in version e8e0771 of the Ethereum JSON-RPC API reference, unless breaking changes were made and widely implemented for the health of the ecosystem. For example, to fix a major security or privacy problem. | Yes | ? | Yes ? | Yes | ? |
[C] JRPC-015: Enterprise Ethereum clients MUST provide the capability to accept and respond to JSON-RPC method calls over a websocket interface. | Yes | ? | Yes | Yes | ? |
[C] JRPC-040: Enterprise Ethereum clients MUST provide an implementation of the
debug_traceTransaction method from the
Go Ethereum Management API.
|
Yes | ? | Yes | Yes | ? |
[C] JRPC-050: Enterprise Ethereum clients MUST implement the JSON-RPC-PUB-SUB API. | Yes | ? | Yes | Yes | ? |
[P] JRPC-070: Enterprise Ethereum clients implementing additional nonstandard
subscription types for the JSON-RPC-PUB-SUB API MUST prefix their
subscription type names with a namespace prefix other than eea_ .
|
Yes | ? | Yes | Yes | ? |
[P] JRPC-080: Enterprise Ethereum clients must not use the prefix
eea_ for the names of JSON-RPC methods that are not defined
by this specification.
|
Yes | ? | Yes | Yes | ? |
[P] JRPC-020: Enterprise Ethereum clients MUST implement at least
one of the following extensions to create private transaction types defined in the
Section "Private Transactions":
|
Yes | ? | Yes | Yes | ? |
[P] JRPC-025: Enterprise Ethereum clients MAY implement
the following experimental extensions to create private transaction types defined in
the Section "Private Transactions":
|
No | ? | No | Yes | ? |
[P] JRPC-030: The eea_sendTransactionAsync ,
eea_sendTransaction , eea_sendRawTransactionAsync , and
eea_sendRawTransaction methods MUST respond with a JSON-RPC
error response when an unimplemented private transaction type is
requested. The error response MUST have the code -50100
and the message Unimplemented private transaction type .
|
No | ? | Yes | Yes | ? |
[C] JRPC-035: If a restricted private transaction is requested
with values for both the privateFor and privacyGroupId parameters,
Enterprise Ethereum clients MUST return an error.
The error response MUST have the code -50100 and the
message Invalid private transaction parameters .
|
Not Applicable | ? | Yes | ? | ? |
[P] PERM-300 permissioning contracts provided by an Enterprise Ethereum client SHOULD be certified as conforming to EthTrust Security Level 1, version 1 | ? | ? | ? | ? | ? |
[P] PERM-330 permissioning contracts provided by an Enterprise Ethereum client SHOULD be certified as conforming to EthTrust Security Level 3, version 1 | ? | ? | ? | ? | ? |
[P] PERM-200: Enterprise Ethereum clients
MUST NOT allow an incoming connection from a node unless either:
|
No (uses a custom contract for this function) | ? | Yes | No | ? |
[P] PERM-210: When checking the response to
connectionAllowed , if any unknown permissioning bits are found to
be zero, Enterprise Ethereum clients MUST reject the connection.
|
No (uses a custom contract for this function) | ? | Yes | No | ? |
[P] PERM-220: On receipt of a NodePermissionsUpdated event
containing an addsRestrictions property with the value
true , Enterprise Ethereum clients MUST:
|
No (uses a custom contract for this function) | ? | Not Applicable | No | ? |
[P] PERM-230: On receipt of an AccountPermissionsUpdated
event containing an addsPermissions property with the value
true , Enterprise Ethereum clients MUST:
|
No (uses a custom contract for this function) | ? | Not Applicable | No | ? |
[P] PERM-240: Enterprise Ethereum clients MUST NOT accept a transacttion unless either:
|
Uses a custom contract for this function | ? | Yes | Uses a custom contract for this function | ? |
[P] PERM-250: On receipt of an AccountPermissionsUpdated event
containing an addsRestrictions property with the value
true , Enterprise Ethereum clients MUST:
|
No (uses a custom contract for this function) | ? | Not Applicable | No | ? |
[P] PERM-260: On receipt of an AccountPermissionsUpdated
event containing an addsPermissions property with the value
true , Enterprise Ethereum clients MUST:
|
No (uses a custom contract for this function) | ? | Not Applicable | No | ? |
[P] PRIV-220: Enterprise Ethereum clients SHOULD enable encryption of all data
stored by the client. Since some users will prefer to use a system-wide functionality to do this, a good implementation will support that choice. |
? | ? | ? | ? | ? |
[P] PRIV-010: Enterprise Ethereum clients MUST support restricted private transactions. | no | ? | Yes | Yes | ? |
When implementing restricted private transactions: | |||||
[P] PRIV-005: Enterprise Ethereum clients MUST implement the
eea_getPrivateTransactionRecipt
method to return receipts for restricted private transactions./th>
| Not Applicable | ? | No | No | ? |
[P] PRIV-011: Enterprise Ethereum clients MUST use the SHA3-512 algorithm to calculate hashes of the payload in restricted private transactions. | Not Applicable | ? | No | Yes | ? |
[P] PRIV-020: Enterprise Ethereum clients MUST encrypt payload data when stored in restricted private transactions. | Not Applicable | ? | Yes | Yes | ? |
[P] PRIV-030: Enterprise Ethereum clients MUST encrypt payload data when in transit in restricted private transactions. | Not Applicable | ? | Yes | Yes | ? |
[P] PRIV-050: Enterprise Ethereum clients MAY encrypt metadata when in transit in restricted private transactions. | Not Applicable | ? | Yes | No | ? |
[P] PRIV-060: Nodes that relay a restricted private transaction but are not party to that transaction, MUST NOT store payload data. | Not Applicable | ? | Yes | Yes | ? |
[P] PRIV-070: Nodes that relay a restricted private transaction but are not party to that transaction SHOULD NOT store the metadata. | Not Applicable | ? | Yes | Yes | ? |
[P] PRIV-080: The implementation of the
eea_sendTransactionAsync , eea_sendTransaction ,
eea_sendRawTransactionAsync , or eea_sendRawTransaction
methods (see Section ) with the
restriction parameter set to restricted , MUST result
in a restricted private transaction.
|
Not Applicable | ? | Yes | Yes | ? |
[P] PRIV-180: Enterprise Ethereum clients SHOULD be able to extend the set of parties to a private transaction (or forward the private transaction in some way). | Yes | ? | Yes | Yes | ? |
[P] PRIV-190: Enterprise Ethereum clients SHOULD provide the ability for nodes to achieve consensus on their mutually private transactions. | Not Applicable | ? | Yes | Yes | ? |
[C] NODE-010: Enterprise Ethereum clients MUST provide the ability to specify at startup a list of static peer nodes to establish peer-to-peer connections with. | Yes | ? | Yes | Yes | ? |
[C] NODE-020: Enterprise Ethereum clients MUST provide the ability to enable or disable peer-to-peer node discovery. | Yes | ? | Yes | Yes | ? |
[P] NODE-090: Enterprise Ethereum clients SHOULD implement transaction ordering according to the "by Price and by Nonce" algorithm, sorting transactions by price while respecting the nonce ordering for each account. | Yes | ? | ? | Yes | ? |
[P] NODE-095: Enterprise Ethereum clients MUST specify explicitly and precisely in documentation any transaction ordering logic that is different from that of Geth as recommended in NODE-090 | Not Applicable | ? | ? | Not Applicable | ? |
[P] PART-010: Enterprise Ethereum clients MUST provide the ability to specify a list of accounts that are permitted to transact with the blockchain. | Yes | ? | Yes | Yes | ? |
[P] PART-015: Enterprise Ethereum clients MUST be able to verify that accounts are present on the list required by PART-010: when adding transactions from the account to a block, and when verifying a received block containing transactions created by that account. | Yes | ? | Yes | Yes | ? |
[P] STOR-040: Enterprise Ethereum clients SHOULD permit a smart contract operating on private state to access private state created by other smart contracts involving the same parties to the transaction. | Not Applicable | ? | Yes | Yes | ? |
[P] STOR-050: Enterprise Ethereum clients MUST NOT permit access to private state created by smart contracts except by parties to the transaction. | Not Applicable | ? | Yes | Yes | ? |
[P] STOR-070: Enterprise Ethereum clients SHOULD encrypt any private state held in persistent storage. | Not Applicable | ? | Yes | No | ? |
[P] EXEC-010: Enterprise Ethereum clients MUST provide a smart contract execution environment implementing the public Ethereum EVM opcode set used in the mainnet's London network upgrade. | Yes | Yes | Yes | Yes | ? |
[P] EXEC-020: Enterprise Ethereum clients that provide a smart contract execution environment extending the public Ethereum EVM opcode set MUST register the opcode and name of the Enterprise Ethereum client in the EEA's opcode registry. | Not Applicable | Not Applicable | Not Applicable | Not Applicable | Not Applicable |
[P] EXEC-025: Enterprise Ethereum clients that provide a smart contract execution environment extending the public Ethereum EVM opcode set SHOULD register a decription of the new functionality, and a URL for a complete specification and test suites in the EEA's opcode registry, and create an EIP describing the new opcode. | Not Applicable | Not Applicable | Not Applicable | Not Applicable | ? |
[P] EXEC-030: Enterprise Ethereum clients SHOULD support the ability to synchronize their public state with the public state held by other public Ethereum nodes. | Yes | Yes | Yes | Yes | ? |
[C] EXEC-060: Enterprise Ethereum clients MAY support configurable alternative cryptographic curves as encryption options for Enterprise Ethereum blockchains. | No | No | No | Yes | ? |
[P] CONS-092: Enterprise Ethereum clients MUST support the "QBFT" Byzantine Fault Tolerant consensus algorithm. | ? | ? | Yes | Yes | ? |
[P] CONS-093: Enterprise Ethereum clients MUST support the "Clique" Proof of Authority consensus algorithm. See EIP-225 | Yes | ? | Yes | Yes | ? |
[P] CONS-110: Enterprise Ethereum clients MUST provide the ability to specify the consensus algorithms, through network configuration, to be used for each public blockchain, private blockchain, and sidechain in use. | Yes | ? | Yes | Yes | ? |
[P] PROT-010: Nodes MUST be identified and advertised using the Ethereum enode URL format. | Yes | ? | Yes | Yes | ? |
[P] PROT-015: Enterprise Ethereum clients MUST implement the DEVp2p Node Discovery protocol. | Yes | ? | Yes | Yes | ? |
[P] PROT-020: Enterprise Ethereum clients MUST use the DEVp2p Wire Protocol for messaging between nodes to establish and maintain a communications channel for use by capability protocols. | Yes | ? | Yes | Yes | ? |
[P] PROT-050: Enterprise Ethereum clients MUST be capable of making direct connections to any number of nodes specified as participants in a private transaction. | Not Applicable | ? | Not Applicable | Not Applicable | ? |
[P] PROT-060: Enterprise Ethereum clients SHOULD implement the Whisper protocol. | Yes | ? | No | Yes | ? |
[P] PROT-070: Enterprise Ethereum clients MUST interpret the parameters defined in Section A.2 Defined Events, Functions, and Parameters for network configuration when found in a genesis.json file. | ? | ? | ? | No | ? |
[P] XCLI-001: Enterprise Ethereum clients MUST implement EIP-155 (included in the Spurious Dragon hard fork) to introduce `chain_id` into transaction signing. | ? | ? | Yes | Yes | ? |
[P] XCLI-002: Enterprise Ethereum clients MUST implement EIP-658 (included in the Byzantium hard fork) to embed the transaction status code in receipts. | ? | ? | Yes | ? | ? |
[P] XCLI-004: Enterprise Ethereum clients MUST implement the Typed Transaction Envelope defined in EIP-2718. | ? | ? | Yes | ? | ? |
[P] XCLI-006: Enterprise Ethereum clients MUST implement the Access List transaction type defined in EIP-2930. | ? | ? | Yes | ? | ? |
[P] XCLI-007: Enterprise Ethereum clients MUST reject contracts whose first byte has the value `EF`, as specified in [[!EIP-3541]]. | ? | ? | Yes | ? | ? |
[P] XCLI-020: Enterprise Ethereum clients MAY extend the public Ethereum APIs. To maintain compatibility, Enterprise Ethereum clients SHOULD ensure these new features are a superset of the public Ethereum APIs. | Yes | ? | Yes | Yes | ? |
[P] XCLI-030: Enterprise Ethereum clients MUST implement the Gas mechanism specified in the Ethereum Yellow Paper. | Yes | ? | Yes | Yes | ? |
[P] XCLI-035: Enterprise Ethereum clients MUST implement the same gas cost per opcode used in the mainnet's London network upgrade. | Yes | Yes | Yes | Yes | ? |
[P] XCLI-040: Enterprise Ethereum clients MUST function correctly when the Gas price is set to zero. | Yes | ? | Yes | Yes | ? |
[P] XCLI-050: Enterprise Ethereum clients MUST implement
the eight precompiled contracts defined in Appendix E of the Ethereum Yellow Paper:
|
Yes | ? | Yes | Yes | ? |
[P] XCLI-051: Enterprise Ethereum clients MUST implement the precompiled contract for RFC7693 Blake 2b F compression defined in EIP-152 | Yes | ? | Yes | ? | ? |
[P] XCLI-055: Enterprise Ethereum clients MUST register precompiled contracts following the mechanisms defined by EIP-1352: | Yes | ? | Yes | Yes | ? |
[P] XCLI-060: Enterprise Ethereum clients MUST support the Contract Application Binary Interface (ABI) for interacting with smart contracts. | Yes | ? | Yes | Yes | ? |
[P] XCLI-070: Enterprise Ethereum clients MUST support Recursive Length Prefix (RLP) encoding for binary data. | Yes | ? | Yes | Yes | ? |
[C] MTRC-010: Enterprise Ethereum clients MUST implement EIP-2159 | ? | ? | Yes | ? | ? |