Skip to content

Commit

Permalink
chore: remove sql db in mocked gateway
Browse files Browse the repository at this point in the history
chore: remove useless README

docs: fixed link
  • Loading branch information
jatZama committed Dec 26, 2024
1 parent a33eeba commit ea66306
Show file tree
Hide file tree
Showing 3 changed files with 2 additions and 131 deletions.
84 changes: 0 additions & 84 deletions contracts/examples/README.md

This file was deleted.

45 changes: 0 additions & 45 deletions contracts/test/asyncDecrypt.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,53 +2,10 @@ import dotenv from 'dotenv';
import { Wallet } from 'ethers';
import fs from 'fs';
import { ethers, network } from 'hardhat';
import { Database } from 'sqlite3';

import { DecryptionOracle } from '../types';
import { awaitCoprocessor, getClearText } from './coprocessorUtils';

//const oracleDB = new Database('./oracle.db'); // on-disk db for debugging
const oracleDB = new Database(':memory:');

oracleDB.serialize(() =>
oracleDB.run(
'CREATE TABLE decryptionRequests (requestID TEXT PRIMARY KEY,cts TEXT[] NOT NULL,contractCaller BINARY(20) NOT NULL, callbackSelector BINARY(4) NOT NULL, isFulfilled BOOLEAN NOT NULL DEFAULT FALSE);',
),
);

export function insertSQL(
requestID: BigInt,
cts: BigInt[],
contractCaller: string,
callbackSelector: string,
isFulfilled: boolean,
) {
try {
const requestIDString = requestID.toString();
const ctsStrings = cts.map((num) => num.toString());
oracleDB.run(
'INSERT OR REPLACE INTO decryptionRequests (requestID, cts, contractCaller, callbackSelector, isFulfilled) VALUES (?, ?, ?, ?, ?)',
[requestIDString, JSON.stringify(ctsStrings), contractCaller, callbackSelector, isFulfilled],
);
} catch (error) {
if (error.code === 'SQLITE_CONSTRAINT') {
console.log(`Record with requestID ${requestID} already exists in database`);
}
throw error;
}
}

export function markAsFulfilled(requestID: BigInt): boolean {
try {
const requestIDString = requestID.toString();
oracleDB.run('UPDATE decryptionRequests SET isFulfilled = TRUE WHERE requestID = ?', [requestIDString]);
return true;
} catch (error) {
console.warn(`Failed to mark request ${requestID} as fulfilled. Error: ${error.message}`);
return false;
}
}

const networkName = network.name;

const parsedEnvACL = dotenv.parse(fs.readFileSync('addresses/.env.acl'));
Expand Down Expand Up @@ -137,7 +94,6 @@ const fulfillAllPastRequestsIds = async (mocked: boolean) => {
const handles = event.args[1];
const contractCaller = event.args[2];
const callbackSelector = event.args[3];
insertSQL(requestID, handles, contractCaller, callbackSelector, false);
const typesList = handles.map((handle) => parseInt(handle.toString(16).slice(-4, -2), 16));
// if request is not already fulfilled
if (mocked) {
Expand Down Expand Up @@ -189,7 +145,6 @@ const fulfillAllPastRequestsIds = async (mocked: boolean) => {
};
const tx = await relayer.sendTransaction(txData);
await tx.wait();
markAsFulfilled(requestID);
}
}
};
Expand Down
4 changes: 2 additions & 2 deletions docs/fundamentals/fhevm/contracts.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ This contract is needed for security, especially for coprocessor where we could

This contract tracks the FHEGas consumed in each block, and reverts the transactions inside a block if the FHEGas block limit is exceeded.

## Gateway Contract
## DecryptionOracle Contract

The [GatewayContract](../../../contracts/gateway/GatewayContract.sol) is an onchain contract designed to interact with an offchain Gateway component that handles decryption requests. When a dApp calls the `requestDecryption` function, the Gateway contract emits an event that is caught by the Gateway service.
The [DecryptionOracle](../../../contracts/decryptionOracle/DecryptionOracle.sol) is an onchain contract designed to interact with an offchain Gateway component that handles decryption requests. When a dApp calls the `requestDecryption` function, the `DecryptionOracle` contract emits an event that is caught by the Gateway service.

_Note_: It is possible to have multiple Gateways, so multiple Gateway contracts can also be deployed. This is the only contract from this documentation page that is not strictly part of "core fhEVM" contracts, and as such, it should not be considered as a "trusted" contract. We only trust the KMS and the core fhEVM contracts. The Gateway is only bridging trust from host chain to KMS chain via storage proofs, and from KMS chain to the host chain via the signatures from KMS signers.

0 comments on commit ea66306

Please sign in to comment.