dria-oracle-sdk
v0.0.2
Published
An on-chain AI oracle SDK for Dria
Downloads
84
Maintainers
Readme
Installation
Dria Oracle SDK is an NPM package, which can be installed with any of the following:
npm i dria-oracle-sdk
yarn add dria-oracle-sdk
pnpm add dria-oracle-sdk
Usage
Dria Oracle uses viem, and takes in Viem clients as input:
const walletClient = createWalletClient({
account: privateKeyToAccount(PRIVATE_KEY),
transport: http(RPC_URL),
chain,
});
const publicClient = createPublicClient({
transport: http(RPC_URL),
chain,
});
const oracle = new Oracle({
public: publicClient,
wallet: walletClient,
});
It must then be initialized with the coordinator contract address, which will setup contract instances in the background:
await oracle.init(coordinatorAddress);
That's all! We must also make sure that we have enough allowance to the coordinator contract so that it can pay the oracle fees. You can check the allowance, and approve tokens if you want with the following code:
const allowance = await oracle.allowance();
if (allowance === 0n) {
// you can omit `someAmount` as well, in which case it will approve infinitely
const txHash = await oracle.approve(someAmount);
console.log({ txHash });
}
We are now ready to make a request:
// submits the request transaction
const txHash = await oracle.request("What is 2+2?", ["gpt-4o-mini"]);
// waits for transaction to be mined, returns taskId
const taskId = await oracle.waitRequest(txHash);
With the request made, we have to wait for a while for generator and validator oracles to finish their jobs. We can subscribe to a certain taskId
and wait until it is completed with the wait
function:
// waits for all generation & validations to be finished
await oracle.wait(taskId);
When we return from wait
without any errors, we can be sure that the task is finished. We can read the results with:
const result = await oracle.read(taskId);
const { output, metadata } = result;
Testing
Tests use the live environment, so make sure you have some balance in your wallets. To run them:
pnpm test
License
We are using MIT license.