This library provides convenient access to the ChainGPT Smart Contract Auditor REST API from TypeScript or JavaScript.
npm install --save @chaingpt/smartcontractauditor
# or
yarn add smartcontractauditor
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();
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();