All notable changes to this project will be documented in this file.
- workerpool API url configuration
iexec task debug <taskid> [--logs]
to show offchain informationens.getDefaultDomain(address)
to get the default free to use ENS domain given an address- support for requester secrets
- check dataset secret exists on requestorder check
- check requester secret exists on requestorder check
- app/dataset/workerpool predict address methods
- app/dataset/workerpool check deployed methods
show
commands display ENS when configurediexec ens register <label> --for <address>
default domain is selected given the nature of--for
address- [DEPRECATED] Node 12 support will be droped
- fix unhandled promise rejection when sdk is incorrectly initialized
- fix typo in
iexec storage init --raw
output - fix typo in
iexec storage check --raw
output
- TypeScript interfaces
providerOptions
can be passed to the constructor to configure ethers default provider on bridged chainethProvider
now accepts network name, network chainId and RPC url, using one of those option will setup an IExecConfig with provider allowing read-only operations (operations requiring a Signer will fail)
- split lib into
IExecConfig
and independantIExecModule
s to allow modular imports - reintegrated
iexec-contracts-js-client
- fix a bug transforming an Array into a plain object
- documentation refactoring
- fix ENS configure resolution removed useless transaction for EOA
- observable ENS configuration with
ens.obsConfigureResolution(label, address)
- observable bridge to mainchain with
wallet.obsBridgeToMainchain(amount)
- observable bridge to sidechain with
wallet.obsBridgeToSidechain(amount)
- update deps
- fix
colors
to uncorrupted version
- ENS resolution on iExec sidechains and custom networks
- ENS methods in CLI & lib:
iexec ens resolve <name>
andiexec.ens.resolveName(name)
iexec ens lookup <address>
andiexec.ens.lookupAddress(addres)
iexec ens get-owner <name>
andiexec.ens.getOwner(name)
iexec ens register <label>
iexec.ens.claimName(label, domain)
iexec.ens.configureResolution(label, address)
- fix
iexec registry validate app
to support new mrenclave format
- client-side (in browser) dataset encryption is now possible.
- confirms option allows to set the number of block to wait for transaction confirmation.
iexec app init --tee
init the TEE app template
- [BREAKING]
iexec init
set default chainviviani
(iExec sidecahin testnet) inchain.json
, previously wasgoerli
(using--chain
option still overrides thechain.json
configuration). - [BREAKING] SCONE file system encryption is dropped in favor of AES-256-CBC for dataset encryption. Existing datasets will stop working, these datasets original files MUST be re-encrypted using
iexec dataset encrypt
and republished. - [BREAKING] changed generated dataset keys and encrypted datasets files naming pattern.
- [BREAKING] a dataset is now a single file. in order to pass a tree structure, the dataset owner must package all the files in a single archive file, applications that previously used multiple files from a single dataset must handle unwrapping files from an archive file.
- [BREAKING] app
mrenclave
format changed from string to object previously deployed TEE apps must be rebuilt and redeployed with v6 workflow - [BREAKING]
iexec.task.obsTask()
now returnsPromise<Observable>
previously it returnedObservabe
- [BREAKING]
iexec.deal.obsDeal()
now returnsPromise<Observable>
previously it returnedObservabe
- [DEPRECATED]
iexec wallet getETH
is now an alias toiexec wallet get-ether
and will be removed in a next version - [DEPRECATED]
iexec wallet getRLC
is now an alias toiexec wallet get-RLC
and will be removed in a next version - [DEPRECATED]
iexec wallet sendETH
is now an alias toiexec wallet send-ether
and will be removed in a next version - [DEPRECATED]
iexec wallet sendRLC
will be removed in a next version, useiexec wallet send-RLC
BEWARE default unit is RLC! chainId
is no longer required to callIExec
constructor, the chainId is lazily fetched from the provider- fix
iexec wallet send-ether
return sentamount
in wei - fix
fetchWorkerpoolOrderbook()
to includerequester
restricted workerpoolorders (fixapp run
using requester restricted workerpoolorder) - fix
iexec app run
--gas-price
option - removed
mrenclave
from app default template iexec appr run --watch
andiexec deal show --watch
added tasks status details
- [BREAKING]
--algorithm
option is removed fromiexec dataset encrypt
- [BREAKING] removed
iexec.network.id
andiexec.network.isSidechain
, useiexec.network.getNetwork() => Promise<{chainId: String, isSidechain: Boolean}>
- [BREAKING] tee post-compute configuration responsibility has been transferred to the SMS and is no longer supported by requestorder. any custom
iexec_tee_post_compute_image
andiexec_tee_post_compute_fingerprint
will be silently removed fromrequestorder.params
. - [BREAKING] drop previously deprecated
iexec wallet show --raw
returned json keybalance.ETH
, usebalance.ether
instead - [BREAKING] drop previously deprecated
bridge.bridgedChainId
inchain.json
usebridge.bridgedChainName
instead - [BREAKING] drop previously deprecated
iexec.orderbook.fetchWorkerpoolOrderbook(category, options)
usecategory
as an option ofiexec.orderbook.fetchWorkerpoolOrderbook(options)
- [BREAKING] drop previously deprecated
iexec.orderbook.fetchRequestOrderbook(category, options)
usecategory
as an option ofiexec.orderbook.fetchRequestOrderbook(options)
- [BREAKING] drop previously deprecated
iexec.orderbook.fetchAppOrderbook()
returned valueappOrders
useorders
- [BREAKING] drop previously deprecated
iexec.orderbook.fetchDatasetOrderbook()
returned valuedatasetOrders
useorders
- [BREAKING] drop previously deprecated
iexec.orderbook.fetchWorkerpoolOrderbook()
returned valueworkerpoolOrders
useorders
- [BREAKING] drop previously deprecated
iexec.orderbook.fetchRequestOrderbook()
returned valuerequestOrders
useorders
- [BREAKING] drop previously deprecated
task.waitForTaskStatusChange(taskid, initialStatus)
usetask.obsTask(taskid)
- set ethers version to ~5.3.1 for pre berlin fork compatibility (iExec sidechains)
- fixed
iexec registry validate app
- [BREAKING] drop support for Node 10
- iExec enterprise flavour support
iexec wallet swap-eRLC-for-RLC
andwallet.wrapEnterpriseRLC()
enables to wrap RLC to eRLC (requires an authorized wallet)iexec wallet swap-eRLC-for-RLC
andwallet.unwrapEnterpriseRLC()
enables to unwrap eRLC to RLC (requires an authorized wallet)enterprise
value added to--chain [chainName]
option enable connecting iExec enterprise- optional named argument
flavour
added to IExec constructor enables connecting iExec enterprise by passingflavour: 'enterprise'
id
is no longer requred inchain.json
- passing
chainId
to--chain [chainName]
will support only the following values:1
formainnet
,5
forgoerli
,134
forbellecour
,133
forviviani
- CLI
native
chain key no longer set default gasPrice to 0, use key"useGas": false
to force default gasPrice to 0 - lib
isNative
option no longer set default gasPrice to 0, use optionuseGas: false
to force default gasPrice to 0 - migrate EIP712 hash and sign to ethers implementation
- fixed
iexec deal claim
fail due to missing signer - [DEPRECATED]
bridge.bridgedChainId
inchain.json
is deprecated and must me replaced bybridge.bridgedChainName
iexec orderbook
more filter optionsiexec orderbook
paginationiexec app request-execution <appAddress>
publish a requestorder to run an app at limit price
- migrated to new market API
- fixed amount validation error
- fixed multiaddr format machine to human
- fixed requester stake too low error message for matching orders
- update
Web3ProviderError
messages iexec orderbook workerpool [address]
--category <catid>
is now optionnaliexec orderbook requester [address]
--category <catid>
is now optionnal- [DEPRECATED]
iexec.orderbook.fetchWorkerpoolOrderbook(category, options)
is deprecated, usecategory
as an option ofiexec.orderbook.fetchWorkerpoolOrderbook(options)
- [DEPRECATED]
iexec.orderbook.fetchRequestOrderbook(category, options)
is deprecated, usecategory
as an option ofiexec.orderbook.fetchRequestOrderbook(options)
- [DEPRECATED]
iexec.orderbook.fetchAppOrderbook()
returned valueappOrders
is deprecated, useorders
- [DEPRECATED]
iexec.orderbook.fetchDatasetOrderbook()
returned valuedatasetOrders
is deprecated, useorders
- [DEPRECATED]
iexec.orderbook.fetchWorkerpoolOrderbook()
returned valueworkerpoolOrders
is deprecated, useorders
- [DEPRECATED]
iexec.orderbook.fetchRequestOrderbook()
returned valuerequestOrders
is deprecated, useorders
- undocumented option
beforeTimestamp
removed fromiexec.deal.fetchRequesterDeals()
- undocumented output value
openVolume
removed fromiexec.orderbook.fetchWorkerpoolOrderbook()
andiexec orderbook workerpool
- support for unit in amounts
- ether units:
ether
(eth
),finney
,szabo
,gwei
,mwei
,kwei
,wei
- RLC units:
RLC
,nRLC
- ether units:
- fixed result encryption v5 workflow
- messages amount use main units (RLC and ether)
- [DEPRECATED]
iexec wallet show --raw
returned json keybalance.ETH
is deprecated, usebalance.ether
instead
- ENS resolution
- support for INFURA, Etherscan and Alchemy providers configuration
- simplified order management for deployed resources in cli
iexec app/dataset/workerpool publish
iexec app/dataset/workerpool unpublish
- remote storage management
- support for
dropbox
storage iexec storage init [provider]
initialize the remote storageiexec storage check [provider]
check if the remote storage is initializediexec.storage.defaultStorageLogin()
get an authorization token for default remote storageiexec.storage.pushStorageToken()
push a storage token to the SMS
- support for
- dataset secret management in js lib
iexec.dataset.pushDatasetSecret(datasetAddress, secret)
push the dataset key to the SMSiexec.dataset.checkDatasetSecretExists(datasetAddress)
check if the dataset key exists in the SMS
- result encryption key management in js lib
iexec.result.pushResultEncryptionKey(rsaPubKey)
push the beneficary result encryption key to the SMSiexec.result.updateResultEncryptionKey(rsaPubKey)
update the beneficary result encryption key in the SMSiexec.result.checkResultEncryptionKeyExists(address)
check if the beneficary result encryption key exists in the SMSutils.decryptResult(encryptedResultFile, beneficiaryKey)
decrypt encrypted result with RSA beneficiary key
- requestorder check to prevent runtime errors
iexec order sign
,iexec order publish
,iexec order fill
andiexec app run
perform advanced check on request (use option--skip-request-check
to disable)iexec.order.signRequestorder()
,iexec.order.publishRequestorder()
andiexec.order.matchOrder()
perform advanced check on request (use option{ checkRequest: false }
to disable)
--decrypt
option addediexec task show <taskid> --download --decrypt
allow to decrypt downloaded result--watch
option added toiexec deal show <dealid>
allow to watch execution status changes- default values for
order.createApporder()
,order.createDatasetorder()
,order.createWorkerpoolorder()
andorder.createRequestorder()
. - support for units in
parseEth()
&parseRLC()
methods
- [BREAKING]
iexec app show <index>
&app.showUserApp(index)
first index is0
previously was1
- [BREAKING]
iexec dataset show <index>
&dataset.showUserDataset(index)
first index is0
previously was1
- [BREAKING]
iexec workerpool show <index>
&dataset.showUserWorkerpool(index)
first index is0
previously was1
- [BREAKING]
iexec dataset check-secret
returned json key is nowisSecretSet
previously wasisKnownAddress
- [BREAKING]
iexec task show
&task.show(taskid)
returnedtask.results
is an object previously was url or hexString - [BREAKING]
iexec app run
option--dataset <address|"deployed">
using last deployed dataset is no more implicit - [BREAKING]
iexec app run
option--workerpool <address|"deployed">
using last deployed workerpool is no more implicit - [BREAKING]
bridge.bridgedChainId
is now used to override bridged chain chainId iniexec.json
previouslybridge.bridgedNetworkId
was used - [BREAKING]
iexec result generate-keys
is deprecated, useiexec result generate-encryption-keypair
- [BREAKING]
iexec result push-secret
is deprecated, useiexec result push-encryption-key
- [BREAKING]
iexec result check-secret
is deprecated, useiexec result check-encryption-key
returned json key is nowisEncryptionKeySet
previously wasisKnownAddress
- [BREAKING] standardized Error messages format, capitalized first letter.
- access to the blockchain through ethers default provider
- standardized CLI messages format
- fixed mutation in order sign methods
- fixed
iexec wallet sweep
&wallet.sweep()
- fixed method name
iexec.order.publishWorkerpoolorder()
- fixed method name
iexec.order.unpublishWorkerpoolorder()
- [BREAKING]
aes-256-cbc
dataset encryption is removed, onlyscone
encryption is supported (useiexec dataset encrypt --algorithm scone
)
orderbook.fetchAppOrderbook
andiexec orderbook app <address>
optional filters (dataset, workerpool, requester)orderbook.fetchDatasetOrderbook
andiexec orderbook dataset <address>
optional filters (app, workerpool, requester)utils.sumTags([...Bytes32])
added to JS libtask.obsTask(taskid, { dealid })
observable for task statusdeal.obsDeal(dealid)
observable for deal status
- fix
iexec order show --raw
output task.waitForTaskStatusChange(taskid, initialStatus)
is deprecated prefertask.obsTask(taskid)
iexec app run [address]
allow to run an app on iExec at the market pricedeal.show(dealid)
andiexec deal show
returns extra keysfinalTime: BN
anddeadlineReached: Boolean
task.show(taskid)
andiexec task show
returns extra keystaskTimedOut: Boolean
requestorder.params
now accepts object iniexec.json
and JS lib
- fix SMS url in
chain.json
- fix
task.show(taskid)
andiexec task show
returnedstatusName
is now set to"TIMEOUT"
when task timed out
gpu
tag is now supportedgetTransactionCount
option for custom nonce management- Goerli testnet added to
chain.json
runiexec init --skip-wallet
to updatechain.json
- updated yup integer validation
iexec wallet show
no longer requires password to show wallet content (issue #87)iexec account show
no longer requires password to show account content- fix
iexec.app.showApp(address)
andiexec app show
now returns decodedappMREnclave
iexec wallet bridge-to-sidechain <nRlcAmount>
sending RLC from a mainchain to the bridged sidechain.iexec wallet bridge-to-mainchain <nRlcAmount>
sending RLC from a sidechain to the bridged mainchain.- optional bridge configuration in
chain.json
- brindging RLC between mainchain an sidechain may throw
BridgeError
deal.claim(dealid)
andiexec deal claim
to claim all failed of a dealutils.getSignerFromPrivateKey()
creates a signer provider for server side applications
- [BREAKING]
iexec order init --raw
output is now a single json{ok, apporder, datasetorder, workerpoolorder, requestorder, fail: [...errors]}
. - [BREAKING]
iexec order sign --raw
output is now a single json{ok, apporder, datasetorder, workerpoolorder, requestorder, fail: [...errors]}
. - [BREAKING]
iexec order cancel --raw
output is now a single json{ok, apporder, datasetorder, workerpoolorder, requestorder, fail: [...errors]}
. - [BREAKING]
iexec order fill --raw
volume in output is now formated as decimal string, previously was hexadecimal string. - [BREAKING]
iexec order publish --raw
output is now a single json{ok, apporder, datasetorder, workerpoolorder, requestorder, fail: [...errors]}
. - [BREAKING]
iexec order unpublis --raw
output is now a single json{ok, apporder, datasetorder, workerpoolorder, requestorder, fail: [...errors]}
. - [BREAKING]
iexec order show --raw
output is now a single json{ok, apporder, datasetorder, workerpoolorder, requestorder, fail: [...errors]}
. - [BREAKING]
iexec registry validate <object> --raw
output is now a single json{ok, validated: [...fileNames], fail: [...errors]}
. - [BREAKING] Ethereum public key representation changed, first byte
04
is no longuer skipped. - [BREAKING]
app.deploy()
promise now resolves as{address, txHash}
, previously wasaddress
. - [BREAKING]
dataset.deploy()
promise now resolves as{address, txHash}
, previously wasaddress
. - [BREAKING]
workerpool.deploy()
promise now resolves as{address, txHash}
, previously wasaddress
. - [BREAKING]
account.deposit()
promise now resolves as{amount, txHash}
, previously wasamount
. - [BREAKING]
account.withdraw()
promise now resolves as{amount, txHash}
, previously wasamount
. - [BREAKING]
wallet.sweep()
promise now resolves as{sendNativeTxHash, sendERC20TxHash, errors}
on mainchains or{sendNativeTxHash, errors}
on sidechains, previously was{sendETHTxHash, sendRLCTxHash}
. - [BREAKING]
order.cancel()
promise now resolves as{order, txHash}
, previously wastrue
.
- [BREAKING] currated utils
- [BREAKING] imports of
wallet
,account
,order
,orderbook
,deal
,task
,hub
are removed.
iexec orderbook workerpool
added option--require-tag <...tags>
- Support for tag array of string representation (ex: tee tag
0x0000000000000000000000000000000000000000000000000000000000000001
can be replaced by['tee']
), available in:iexec.json
orderbook
command- js lib
- Filtering options for orderbook in js lib
IExec
sdk constructor simplify integration see documentationwallet.getAddress()
gives the current wallet addressdeal.show()
added keytasks: { [idx]: [taskid] }
to the resolved value- dynamic cast and validation of inputs, invalid inputs throw
ValidationError
. - introduced TypedErrors
ValidationError
,Web3ProviderError
,Web3ProviderCallError
,Web3ProviderSendError
,Web3ProviderSignMessageError
,ObjectNotFoundError
.
- [BREAKING] droped support for nodejs v8 added support for nodejs v14
- [BREAKING]
iexec tee
subcommands removed and replacediexec tee init
is replaced byìexec dataset init --encrypted
iexec tee encrypt-dataset
is replaced byiexec dataset encrypt
iexec tee generate-beneficiary-keys
is replaced byiexec result generate-key
iexec tee decrypt-result
is replaced byiexec result decrypt
iexec tee push-secret
is replaced byiexec dataset push-secret
andiexec result push-secret
iexec tee check-secret
is replaced byiexec dataset check-secret
andiexec result check-secret
- [BREAKING]
.tee-secrets/
folder moved to.secrets
- [BREAKING] default original dataset folder
tee/original-dataset/
folder moved todatasets/original/
- [BREAKING] default encrypted dataset folder
tee/original-encrypted/
folder moved todatasets/encrypted/
- [BREAKING]
iexec deal show
ends with error when the deal doesn't exists - [BREAKING]
deal.show()
throw when the deal doesn't exists - [BREAKING]
deal.computeTaskIdsArray()
is no longer exposed (deal.show()
resolves now as{..., tasks: { [idx]: [taskid] }}
) - [BREAKING]
deal.computeTaskId()
returns a promise - [BREAKING] errors handling with
--raw
option now returns{ command, error: { name, message } }
previously was{ command, error: message }
- [DEPRECATED] imports of
wallet
,account
,order
,orderbook
,deal
,task
,hub
is deprecated, useIExec
constructor. - [DEPRECATED]
order.signOrder()
is replaced by dedicated methods ofIExec
:order.signApporder()
,order.signDatasetorder()
,order.signWorkerpoolorder()
,order.signRequestorder()
- [DEPRECATED]
order.cancelOrder()
is replaced by dedicated methods ofIExec
:order.cancelApporder()
,order.cancelDatasetorder()
,order.cancelWorkerpoolorder()
,order.cancelRequestorder()
- [DEPRECATED]
order.publishOrder()
is replaced by dedicated methods ofIExec
:order.publishApporder()
,order.publishDatasetorder()
,order.publishWorkerpoolorder()
,order.publishRequestorder()
- [DEPRECATED]
order.unpublishOrder()
is replaced by dedicated methods ofIExec
:order.unpublishApporder()
,order.unpublishDatasetorder()
,order.unpublishWorkerpoolorder()
,order.unpublishRequestorder()
- [DEPRECATED]
hub.createObj()
is replaced by dedicated methods ofIExec
:app.deployApp()
,dataset.deployDataset()
,workerpool.deployWorkerpool()
- [DEPRECATED]
hub.countObj()
is replaced by dedicated methods ofIExec
:app.countUserApps()
,dataset.countUserDatasets()
,workerpool.countUserWorkerpools()
- [DEPRECATED]
hub.showObj()
is replaced by dedicated methods ofIExec
:hub.countUserApps()
,hub.countUserDatasets()
,hub.countUserWorkerpools()
- [DEPRECATED]
hub.showApp(contracts, objAddressOrIndex, userAddress)
will stop support paramsìndex
anduserAdress
useIExec
methodsapp.showUserApp(index, userAddress)
orapp.showApp(appAddress)
- [DEPRECATED]
hub.showDataset(contracts, objAddressOrIndex, userAddress)
will stop support paramsìndex
anduserAdress
please useIExec
methoddataset.showUserDataset(index, userAddress)
ordataset.showDataset(contracts, datasetAddress)
- [DEPRECATED]
hub.showWorkerpool(contracts, objAddressOrIndex, userAddress)
will stop support paramsìndex
anduserAdress
please useIExec
methodworkerpool.showUserWorkerpool(index, userAddress)
orworkerpool.showWorkerpool(workerpoolAddress)
- [DEPRECATED]
task.claim(contracts, taskid, userAddress)
userAdress
is no longer required, please useIExec
methodtask.claim(taskid)
- [DEPRECATED]
task.fetchResults(contracts, taskid, userAddress, options)
userAdress
is no longer required, please useIExec
methodtask.fetchResults(taskid, options)
- Update
multiaddr@6.1.0
tomultiaddr@7.1.0
:/ipfs
protocol 421 is now displayed/p2p
- fix everyone can claim a task
- fix
iexec task show
oracle results hexadecimal display (#88) - fix
iexec task show --download
oracle results error message
- [BREAKING]
iexec deal show <dealid> --tasks <...index>
--tasks
option is removed, as deal's tasks are added to the ouptup. - [BREAKING]
iexec tee
subcommands removed and replaced (see changed)
- update params format for iexec core v3.2 compatibility
- global option
--quiet
disable update notification
- global option
--raw
disable update notification - fix
iexec wallet create --raw
andiexec wallet import --raw
JSON output on fail - fix numbers format in templates
- update api url
iexec registry validate <'app'|'dataset'|'workerpool'>
update schema validation for buyConf- dependencies update
iexec order fill --params <string>
allow to generate request order on the fly with specified params
- request orders are no longer initialized with formated params
iexec tee encrypt-dataset --algorithm <'aes-256-cbc'|'scone'>
allow to choose encryption methode, default is aes-256-cbc.--algorithm scone
allow an encrypted dataset to be processed into a SGX enclave by a Scone compatible dapp.
iexec tee encrypt-dataset
now supports dataset folders.- CLI fix typo
- option
--gas-price <wei>
allow to use custom gas price.
- fix display task contributors.
- limit methods exported from
utils
module.
iexec tee encrypt-dataset
now use nodejs implementation (previously dockerized Openssl 1.1.1b).
- Dataset encryption
iexec tee encrypt-dataset
.
- beneficary keys generated by
ìexec tee generate-beneficiary-keys
now use AES 256 (previously AES 128).
This is the initial release of iExec v3.