A simple library for JavaScript and TypeScript to interact with AI Network via JSON RPC API.
$ npm install @ainblockchain/ain-js
The full API of this library can be found in API document, along with code examples. The following code shows how to create a wallet account using the wallet API.
const Ain = require('@ainblockchain/ain-js').default;
const ain = new Ain('https://testnet-api.ainetwork.ai', 'wss://testnet-event.ainetwork.ai', 0);
function main() {
const accounts = ain.wallet.create(1);
console.log(accounts[0]);
}
main();
// output example:
// {
// address: '0xb2585543Cfcfb79CF73a1a14b2DfBC411913940F',
// private_key: '...',
// public_key: '...'
// }
const Ain = require('@ainblockchain/ain-js').default;
const ain = new Ain('https://testnet-api.ainetwork.ai', 'wss://testnet-event.ainetwork.ai', 0);
async function main() {
const address = ain.wallet.addAndSetDefaultAccount('YOUR_PRIVATE_KEY');
// write value to db
const result = await ain.db.ref('YOUR_DATA_PATH').setValue({
value: 'hello',
gas_price: 500,
timestamp: Date.now(),
nonce: -1,
});
// read value from db
const data = await ain.db.ref('YOUR_DATA_PATH').getValue();
console.log(data);
}
main();
Rule configs validate transactions and control write permissions, while owner configs manage write access to both rules and themselves.
The following code shows how to configure a rule to allow write access for all users:
const Ain = require('@ainblockchain/ain-js').default;
const ain = new Ain('https://testnet-api.ainetwork.ai', 'wss://testnet-event.ainetwork.ai', 0);
async function main() {
const address = ain.wallet.addAndSetDefaultAccount('YOUR_PRIVATE_KEY');
// set the rule to allow write access for all users
const result = await ain.db.ref(appPath).setRule({
value: {
'.rule': {
write: true,
},
},
gas_price: 500,
timestamp: Date.now(),
nonce: -1,
});
}
main();
const Ain = require('@ainblockchain/ain-js').default;
const ain = new Ain('https://testnet-api.ainetwork.ai', 'wss://testnet-event.ainetwork.ai', 0);
async function main() {
const address = ain.wallet.addAndSetDefaultAccount('YOUR_PRIVATE_KEY');
// trigger a function when a value is written to the data path
const result = await ain.db.ref('YOUR_DATA_PATH').setFunction({
value: {
'.function': {
YOUR_FUNCTION_ID: {
function_type: 'REST',
function_url: 'YOUR_FUNCTION_URL',
function_id: 'YOUR_FUNCTION_ID',
},
},
},
gas_price: 500,
timestamp: Date.now(),
nonce: -1,
});
}
main();
Browse the documentation online:
To run tests, a local blockchain node must be running.
- Clone and install the AIN Blockchain:
$ git clone https://github.com/ainblockchain/ain-blockchain.git
$ cd ain-blockchain
$ npm install
- Start the local blockchain:
$ bash start_local_blockchain.sh
- For event manager test cases, ensure Node 2 is started with the
ENABLE_EVENT_HANDLER
environment variable set totrue
.
- Run the tests:
$ npm run test
- To update test snapshot files:
$ npm run test_snapshot
MPL-2.0 License.