Skip to content

Latest commit

 

History

History
429 lines (253 loc) · 7.94 KB

File metadata and controls

429 lines (253 loc) · 7.94 KB

iexec


iexec / IExecDatasetModule

Class: IExecDatasetModule

module exposing dataset methods

Extends

Constructors

Constructor

new IExecDatasetModule(configOrArgs, options?): IExecDatasetModule

Create an IExecModule instance

Parameters

configOrArgs

IExecConfigArgs | IExecConfig

options?

IExecConfigOptions

Returns

IExecDatasetModule

Inherited from

IExecModule.constructor

Properties

config

config: IExecConfig

current IExecConfig

Inherited from

IExecModule.config

Methods

checkDatasetSecretExists()

checkDatasetSecretExists(datasetAddress, options?): Promise<boolean>

check if a the dataset secret exists in the Secret Management Service

example:

const isSecretSet = await checkDatasetSecretExists(datasetAddress);
console.log('secret exists:', isSecretSet);

Parameters

datasetAddress

string

options?
teeFramework?

TeeFramework

Returns

Promise<boolean>


checkDeployedDataset()

checkDeployedDataset(datasetAddress): Promise<Boolean>

check if an dataset is deployed at a given address

example:

const isDeployed = await checkDeployedDataset(address);
console.log('dataset deployed', isDeployed);

Parameters

datasetAddress

string

Returns

Promise<Boolean>


computeEncryptedFileChecksum()

computeEncryptedFileChecksum(encryptedFile): Promise<string>

compute the encrypted dataset file's checksum required for dataset deployment

the dataset checksum is the encrypted file checksum, use this method on the encrypted file but DO NOT use it on the original dataset file

NB:

  • the dataset checksum is the sha256sum of the encrypted dataset file
  • the checksum is used in the computation workflow to ensure the dataset's integrity

example:

const encryptedDataset = await encrypt(
 datasetFile,
 encryptionKey,
);
const checksum = await computeEncryptedFileChecksum(
 encryptedDataset,
);

Parameters

encryptedFile

ArrayBuffer | Uint8Array<ArrayBufferLike> | Buffer<ArrayBufferLike>

Returns

Promise<string>


countUserDatasets()

countUserDatasets(userAddress): Promise<BN>

count the datasets owned by an address.

example:

const count = await countUserDatasets(userAddress);
console.log('dataset count:', count);

Parameters

userAddress

string

Returns

Promise<BN>


deployDataset()

deployDataset(dataset): Promise<{ address: string; txHash: string; }>

SIGNER REQUIRED

deploy a dataset contract on the blockchain

example:

const { address } = await deployDataset({
 owner: address,
 name: 'cat.jpeg',
 multiaddr: '/ipfs/Qmd286K6pohQcTKYqnS1YhWrCiS4gz7Xi34sdwMe9USZ7u',
 checksum: '0x84a3f860d54f3f5f65e91df081c8d776e8bcfb5fbc234afce2f0d7e9d26e160d',
});
console.log('deployed at', address);

Parameters

dataset

DatasetDeploymentArgs

Returns

Promise<{ address: string; txHash: string; }>


encrypt()

encrypt(datasetFile, encyptionKey): Promise<Buffer<ArrayBufferLike>>

encrypt the dataset file with the specified key using AES-256-CBC

NB:

  • the supplied key must be 256 bits base64 encoded
  • DO NOT leak the key and DO NOT use the same key for encrypting different datasets

example:

// somehow load the dataset file
const datasetFile = await readDatasetAsArrayBuffer();
// generate a key DO NOT leak this key
const encryptionKey = generateEncryptionKey();
// encrypt
const encryptedDataset = await encrypt(
 datasetFile,
 encryptionKey,
);
// the encrypted binary can be shared
const binary = new Blob([encryptedDataset]);

Parameters

datasetFile

ArrayBuffer | Uint8Array<ArrayBufferLike> | Buffer<ArrayBufferLike>

encyptionKey

string

Returns

Promise<Buffer<ArrayBufferLike>>


generateEncryptionKey()

generateEncryptionKey(): string

generate an encryption key to encrypt a dataset

NB: this method returns a base64 encoded 256 bits key

example:

const encryptionKey = generateEncryptionKey();
console.log('encryption key:', encryptionKey);

Returns

string


predictDatasetAddress()

predictDatasetAddress(dataset): Promise<string>

predict the dataset contract address given the dataset deployment arguments

example:

const address = await predictDatasetAddress({
 owner: address,
 name: 'cat.jpeg',
 multiaddr: '/ipfs/Qmd286K6pohQcTKYqnS1YhWrCiS4gz7Xi34sdwMe9USZ7u',
 checksum: '0x84a3f860d54f3f5f65e91df081c8d776e8bcfb5fbc234afce2f0d7e9d26e160d',
});
console.log('address', address);

Parameters

dataset

DatasetDeploymentArgs

Returns

Promise<string>


pushDatasetSecret()

pushDatasetSecret(datasetAddress, encryptionKey, options?): Promise<boolean>

SIGNER REQUIRED, ONLY DATASET OWNER

push the dataset's encryption key to the Secret Management Service

WARNING: pushed secrets CAN NOT be updated

example:

const pushed = await pushDatasetSecret(datasetAddress, encryptionKey);
console.log('secret pushed:', pushed);

Parameters

datasetAddress

string

encryptionKey

string

options?
teeFramework?

TeeFramework

Returns

Promise<boolean>


showDataset()

showDataset(datasetAddress): Promise<{ dataset: Dataset; objAddress: string; }>

show a deployed dataset details

example:

const { dataset } = await showDataset('0xb9b56f1c78f39504263835342e7affe96536d1ea');
console.log('dataset:', dataset);

Parameters

datasetAddress

string

Returns

Promise<{ dataset: Dataset; objAddress: string; }>


showUserDataset()

showUserDataset(index, address): Promise<{ dataset: Dataset; objAddress: string; }>

show deployed dataset details by index for specified user user

example:

const { dataset } = await showUserDataset(0, userAddress);
console.log('dataset:', dataset);

Parameters

index

BNish

address

string

Returns

Promise<{ dataset: Dataset; objAddress: string; }>


transferDataset()

transferDataset(datasetAddress, to): Promise<{ address: string; to: string; txHash: string; }>

ONLY DATASET OWNER

transfer the ownership of a dataset to the specified address

NB: when transferring the ownership to a contract, the receiver contract must implement the ERC721 token receiver interface

example:

const { address, to, txHash } = await transferDataset(datasetAddress, receiverAddress);
console.log(`dataset ${address} ownership transferred to ${address} in tx ${txHash}`);

Parameters

datasetAddress

string

to

string

Returns

Promise<{ address: string; to: string; txHash: string; }>


fromConfig()

static fromConfig(config): IExecDatasetModule

Create an IExecDatasetModule instance using an IExecConfig instance

Parameters

config

IExecConfig

Returns

IExecDatasetModule

Overrides

IExecModule.fromConfig