@chaingpt/smartcontractauditor
v0.0.2
Published
SDK for Smart Contract Auditing
Readme
ChainGPT Smart Contract Auditor SDK
This library provides convenient access to the ChainGPT Smart Contract Auditor REST API from TypeScript or JavaScript.
Installation
npm install --save @chaingpt/smartcontractauditor
# or
yarn add smartcontractauditorUsage
Audit a smart contract as a stream:
import { SmartContractAuditor } from "@chaingpt/smartcontractauditor";
const smartcontractauditor = new SmartContractAuditor({
apiKey: 'Your ChainGPT API Key',
});
async function main() {
const stream = await smartcontractauditor.auditSmartContractStream({
question:
`Audit the following contract:
pragma solidity ^0.8.0;
contract Counter {
uint256 private count; // This variable will hold the count
constructor() {
count = 0; // Initialize count to 0
}
function increment() public {
count += 1;
emit CountChanged(count); // Emit an event whenever the count changes
}
}`
,
chatHistory: "on"
});
stream.on('data', (chunk: any) => console.log(chunk.toString()));
stream.on('end', () => console.log("Stream ended"));
}
main();Audit a smart contract as a blob:
import { SmartContractAuditor } from "@chaingpt/smartcontractauditor";
const smartcontractauditor = new SmartContractAuditor({
apiKey: 'Your ChainGPT API Key',
});
async function main() {
const response = await smartcontractauditor.auditSmartContractBlob({
question:
`Audit the following contract:
pragma solidity ^0.8.0;
contract Counter {
uint256 private count; // This variable will hold the count
constructor() {
count = 0; // Initialize count to 0
}
function increment() public {
count += 1;
emit CountChanged(count); // Emit an event whenever the count changes
}
}`,
chatHistory: "off"
})
console.log(response.data.bot);
}
main();Retrieve smart contract auditing history:
import { SmartContractAuditor } from "@chaingpt/smartcontractauditor";
const smartcontractauditor = new SmartContractAuditor({
apiKey: 'Your ChainGPT API Key',
});
async function main() {
const response = await smartcontractauditor.getChatHistory({
limit: 10,
offset: 0,
sortBy: "createdAt",
sortOrder: "DESC"
})
console.log(response.data.rows);
}
main();Handling errors
When the library is unable to connect to the API,
or if the API returns a non-success status code (i.e., 4xx or 5xx response),
and error of the class SmartContractAuditorError will be thrown:
import { Errors } from '@chaingpt/smartcontractauditor';
async function main() {
try {
const stream = await smartcontractauditor.auditSmartContractStream({
question:
`Audit the following contract:
pragma solidity ^0.8.0;
contract Counter {
uint256 private count; // This variable will hold the count
constructor() {
count = 0; // Initialize count to 0
}
function increment() public {
count += 1;
emit CountChanged(count); // Emit an event whenever the count changes
}
}`
,
chatHistory: "on"
});
stream.on('data', (chunk: any) => console.log(chunk.toString()));
stream.on('end', () => console.log("Stream ended"));
} catch(error) {
if(error instanceof Errors.SmartContractAuditorError) {
console.log(error.message)
}
}
}
main();Manage Chat History :
- If you want to save the user-specific history, you must pass the
sdkUniqueIdparameter along with the chat history. This applies to both streaming and blob cases.
import { SmartContractAuditor } from "@chaingpt/smartcontractauditor";
const smartcontractauditor = new SmartContractAuditor({
apiKey: 'Your ChainGPT API Key',
});
const uniqueUUid="907208eb-0929-42c3-a372-c21934fbf44f" // your unique uuid of your specific user
async function main() {
const response = await smartcontractauditor.auditSmartContractBlob({
question:
`Audit the following contract:
pragma solidity ^0.8.0;
contract Counter {
uint256 private count; // This variable will hold the count
constructor() {
count = 0; // Initialize count to 0
}
function increment() public {
count += 1;
emit CountChanged(count); // Emit an event whenever the count changes
}
}`,
chatHistory: "on",
sdkUniqueId:uniqueUUid
})
console.log(response.data.bot);
}
main();
