- Fixed usage of JWT for internal service communications across MSs.
- New available endpoint /transaction/{TX_UUID}/speed-up to retry transaction with a defined gas increment.
- New available endpoint /transaction/{TX_UUID}/call-off resend a transaction with same nonce,empty data and 10% more gas than previous job.
- Stop printing chain-proxy access logs errors when
ACCESSLOG_ENABLED=false. - Fixed issue in
tx-senderforwarding jwt whenKEY_MANAGER_API_KEYis set.
- Reduced
tx-listenerservices request toorchestrate-apican be reduced by usage of an optional in-memory cache. To be enabled set a duration usingAPI_CACHE_TTLenvironment variable. - Reduced database I/O usage by ~60%.
- Added missing delete account endpoint into HTTP API.
- Fixed data migration of transaction request data.
- Remove unnecessary and verbose logging.
- Update block number only after fetching 3 blocks
- Fixed
externalTxEnabledchain update.
- Forward user's JWT token to the transaction-sender microservice
- Fixed panic on tx-sender updating status of jobs with
owner_iddifferent than nil. - Migrated faucet DB table to use TEXT for every VARCHAR column.
- Validate existence of
creditorAccountandchainRulebefore creating a new Faucet
- Fixed Chain Proxy issues caused by additional header being added to forwarded request.
- Fixed wrong error code returned importing duplicate accounts
- Fixed missing
nonceattribute in transaction request payloads. - Fixed go-web3 panic error passing HEX as bytes.
- Compatibility with all versions of Solidity <= 0.8.11.
- The ABI of smart contracts must now be registered in the contract registry before they can be used in transactions.
contractNameis now a mandatory argument of contract transactions.contractTagis now an optional argument of contract transactions.
- Removed authentication fallback behaviour to token
subjectwhen custom claims are enabled.
- Fixed issue where Job's, Transaction's and Account's properties are removed when values are not set in update request payload.
- Fixed ACCESS_LOG enabling/disabling toggle feature.
- Fixed lowercase ethereum addresses in response payloads.
- Fixed issue where smart contracts using Solidity structs could not be registered in the contract registry.
- Fixed unintended persisted claims over ongoing requests when using custom claims.
- Support for
usernameas additional constraint to control access over resources. Impersonation would be allowed only via API-KEY. - Support for nested tenants in custom claims, for example tenant
tenantOne:groupOne:subGroupOnewill have access to resources owned bytenantOneandtenantOne:groupOneandtenantOne:groupOne:subGroupOnewould be able to impersonate same tenants. - Support Token Issuer Servers to validate JWTs. Environment variable
AUTH_JWT_ISSUER_URL - Support for new transaction pricing mechanism (eip-1559)
- Support for go-quorum privacy privacy enhancements:
privacyFlags,mandatoryFor - Support for go-quorum private transaction with optional
privateFrom. - Integration of Quorum Key Manager as replacement of Orchestrate Key Manager service
- Attach contract name and tag into transaction receipts when bytecode matches to one of the registered contracts.
- Attach contract information into transaction receipts on every new contract deployment and contract events.
- Quorum Key Manager StoreID can be defined on every account creation.
Orionwas removed in favor ofEEAas PrivateTxManager in chain APIs- Following ETH transaction properties types has been BigInt updated:
valueexpects an HEX value prefix by "0x" instead of BigInt string.gasPriceexpects an HEX value prefix by "0x" instead of BigInt string.nonceexpects an uint64 instead of Integer string.gasexpects an uint64.
- Following Faucet request params has been modified:
amountexpects an HEX value prefix by "0x" instead of BigInt string.maxBalanceexpects an HEX value prefix by "0x" instead of BigInt string.
- In case of empty Orchestrate custom claims, token subject
subis used astenant_id:username. - Command
migration initis merged intomigration up. - Removed usage of
AUTH_JWT_CERTIFICATEin favor ofAUTH_JWT_ISSUER_URLandAUTH_JWT_AUDIENCE - Renamed
AUTH_JWT_CLAIMS_NAMESPACEbyAUTH_JWT_ORCHESTRATE_CLAIMS. - In case of empty Orchestrate custom claims token subject,
subis used astenant_id. - Removed endpoints
/accounts/{address}/signand/accounts/{address}/verify-signaturein favor of/accounts/{address}/sign-messageand/accounts/verify-messageaccordingly to EIP-191 standards - Removed support of zk-snarks account in favor of Quorum Key Manager implementation
- Removed
warninglog removed when the events of the receipt are not found in the contract registry - Fix contract deployment bug where arguments of the constructor are not parsed correctly
- Fixed Chain Proxy issues caused by additional header being added to forwarded request.
- Fix sequence of primary key when a DB copy is performed using the
copy-dbcommand
- Commit the offset to Kafka broker every time a message is processed
- Migrations fail when key-manager is disabled
- Key Manager fails with incorrect error code when key-manager is disabled
- Tx-sender exits updating jobs already in final status
- Tx-sender does not send message on
tx-recovertopic when there are persistent connectivity issues with RPC nodes
- Transaction
priorityis applied as expected - Sender is not funded in raw transactions
- Incorrect server name verification using Postgres in
verify-camode - Tx-sender exits sending Tessera private transaction with invalid 'from'
- Added logging in key-manager microservice
- Wrong tenant assigment when API_KEY was not defined
- Missing decoded logs in kafka receipts for private contract events
- Database overload querying for registered chains
- Incorrect transition to FAILED status on rpc node connectivity issues
- Tx-listener do not exit when it fails to fetch private receipt from Besu node
- Support for metadata on chains
- Signing and verifying payload for zk-snarks accounts
- Hexadecimal string validation for signing endpoints
- Renew token with the Vault Agent where the Key Manager is watching "VAULT_TOKEN_FILE". The Key Manager supports plaintext token and wrapped-token
- Metric value for job status update CREATED to STARTED
- Improve Tx Listener performance to update transaction status to MINED
- New environment variable,
KAFKA_NUM_CONSUMERS, to launch multiple kafka consumer intx-sender - Support for new Postgres setting
DB_POOL_TIMEOUT - Major API and DB performance improvements
- Prevent unnecessary HTTP retries on internal API calls
- Hanging issue during synchronization from block 0
- Tx-listener crashes on heavy load over API
- Import identities from connected KeyManager Vault
- Fail to send raw transaction with not empty data field
- Rename deprecated naming from application metrics
orchestrate_transaction_scheduler_*toorchestrate_api_*
- Merge all previous APIs into a single service:
orchestate-api, encapsulating every individual previous API services - Merge
tx-crafterandtx-signerinto thetx-senderworker to reduce maintenance complexity - Support usage of
in-memoryas storage for Nonce Manager
- Release the Identity API on top of the
orchestate-api, allowing dynamic CRUD operation over accounts whose keys are stored in Vault - Integrate Orchestrate HashiCorp Vault plugin to enhance security
- Add application metrics:
orchestrate_transaction_scheduler_job_latency_seconds: Histogram of job latency between status (second). Except PENDING and MINED (Histogram)orchestrate_transaction_scheduler_mined_latency_secondsHistogram of latency between PENDING and MINED (Histogram)orchestrate_transaction_listener_current_block: Last block processed by each listening session (Counter)
- Support for enable/disable metric modules
- Harmonize and improve logging across all services
- Ability set a custom keep alive interval for Postgres clients
- New environment variable
KAFKA_CONSUMER_GROUP_NAMEto set the Kafka consumer group name
- Incorrect metrics counting for 429 http responses
- Remove
account-generatorandaccount-generatedtopics - Worker services
tx-crafterandtx-signerwere removed along with topicstx-crafterandtx-sender - Jaeger reporting disabled by default
- Remove support for environment variable
ABIto register solidity contract at start - Remove support for environment variable
SECRET_PKEYto import ethereum keys to key vault at start - Remove support for environment variable
CHAIN_REGISTRY_INITto import chains at start - Remove support for GRPC contract API
- Remove API services
contract-registry,transaction-schedulerandchain-registry - Replace support of
kv-v2HashiCorp engine byorchestrateengine. - Environment variable
CHAIN_REGISTRY_CACHE_TTLrenamed toPROXY_CACHE_TTL - Environment variable
TRANSACTION_SCHEDULER_URLreplaced byAPI_URL - Environment variable
CONTRACT_REGISTRY_URLreplaced byAPI_URL - Environment variable
CHAIN_REGISTRY_URLreplaced byAPI_URL
IMPORTANT ! In order to perform this migration, Orchestrate has to be running on the latest minor version of v2.5.x and been migrated to latest v21.1.x
In order to migrate your keys from kv-v2 engine to orchestrate engine you need to follow the next steps:
- Instantiate HashiCorp with both engines enabled:
kv-v2andorchestrate - Initialize the following environment variables:
VAULT_ADDR: HashiCorp host URLVAULT_TOKEN_FILE: Disk path to token file valid for orchestrate engineVAULT_MOUNT_POINT: Mounting point of orchestrate engineVAULT_V2_SECRET_PATH: Path where keys are stored in kv-v2 engineVAULT_V2_MOUNT_POINT: Mounting point of kv-v2 engineVAULT_V2_TOKEN_FILE: Disk path to token file valid for kv-v2 engine
- Execute command:
$> orchestrate key-manager migrate import-secrets
In previous versions of orchestrate each of the API service data was stored in a independent postgres DB.
Therefore to update to v21.1.x you need to import each of service's data by following the next steps for
each of the service DBs you intend to migrate:
- Initialize the following:
DB_MIGRATION_SERVICE: Source DB service name. Values are: "chain-registry", "transaction-scheduler" and "contract-registry"DB_MIGRATION_ADDRESS: Source DB URLDB_MIGRATION_DATABASE: Source DB nameDB_MIGRATION_USERNAME: Source DB usernameDB_MIGRATION_PASSWORD: Source DB password
- Execute command:
$> orchestrate api migrate copy-db