Account
Now that you have setup the project structure in the last step, we'll create our Attester account.
In KILT, an account is an object that interacts with the blockchain.
An account contains multiple properties.
One of them is the address
: this is the entity's unique and public on-chain identifier, that is used to pay fees and deposits.
All we need to create an account is a mnemonic.
A KILT account is a set of cryptographic elements:
- The address, which is generated from the public key
- A signing keypair to write transactions on-chain
In cryptography, a mnemonic usually consists of 12 or 24 random series of words.
For example, gold upset segment cake universe
is a mnemonic.
It's used to generate signing keypairs.
What's great about a mnemonic is that it's human-readable.
A person can memorize it, and use it later to re-generate their keypairs and address.
Create the Accountโ
To generate an account, we use the addFromMnemonic()
function on the KiltKeyringPair
generated via the SDK.
The mnemonic is generated with the polkadot function mnemonicGenerate()
, which generates a 12-word mnemonic.
The KILT SDK is built on top of the polkadot.js library therefore you will find various uses of it in this workshop. The library provides a set of tools to interact with the KILT blockchain and other substrate based blockchains. In addition the polkadot-js library offers cryptographic primitives and a serialization framework to encode/decode data sent to and received from the blockchain. We recommend developers to familiarize themselves with their API documentation to learn more about the functions available.
- Typescript
- Javascript
import { config as envConfig } from 'dotenv'
import * as Kilt from '@kiltprotocol/sdk-js'
export function generateAccount(
mnemonic = Kilt.Utils.Crypto.mnemonicGenerate()
): {
account: Kilt.KiltKeyringPair
mnemonic: string
} {
const keyring = new Kilt.Utils.Keyring({
ss58Format: 38,
type: 'sr25519'
})
return {
account: keyring.addFromMnemonic(mnemonic) as Kilt.KiltKeyringPair,
mnemonic
}
}
// Don't execute if this is imported by another file.
if (require.main === module) {
;(async () => {
envConfig()
try {
await Kilt.init()
const { mnemonic, account } = generateAccount()
console.log('save to mnemonic and address to .env to continue!\n\n')
console.log(`ATTESTER_ACCOUNT_MNEMONIC="${mnemonic}"`)
console.log(`ATTESTER_ACCOUNT_ADDRESS="${account.address}"\n\n`)
} catch (e) {
console.log('Error while setting up attester account')
throw e
}
})()
}
import { config as envConfig } from 'dotenv'
import * as Kilt from '@kiltprotocol/sdk-js'
export function generateAccount(
mnemonic = Kilt.Utils.Crypto.mnemonicGenerate()
) {
const keyring = new Kilt.Utils.Keyring({
ss58Format: 38,
type: 'sr25519',
})
return {
account: keyring.addFromMnemonic(mnemonic),
mnemonic,
}
}
// Don't execute if this is imported by another file.
if (require.main === module) {
;(async () => {
envConfig()
try {
await Kilt.init()
const { mnemonic, account } = generateAccount()
console.log('save to mnemonic and address to .env to continue!\n\n')
console.log(`ATTESTER_ACCOUNT_MNEMONIC="${mnemonic}"`)
console.log(`ATTESTER_ACCOUNT_ADDRESS="${account.address}"\n\n`)
} catch (e) {
console.log('Error while setting up attester account')
throw e
}
})()
}
Executeโ
Now run it to get your Attester <address>
and <mnenomic>
.
- Typescript
- Javascript
yarn ts-node ./attester/generateAccount.ts
node ./attester/generateAccount.js
Your output will provide you with ATTESTER_ACCOUNT_MNEMONIC
and ATTESTER_ACCOUNT_ADDRESS
.
Be sure to save it in your .env
file; it should now look similar to this.
WSS_ADDRESS=wss://peregrine.kilt.io
ATTESTER_ACCOUNT_MNEMONIC="warrior icon use cry..."
ATTESTER_ACCOUNT_ADDRESS="4ohMvUHsyeDhMVZF..."
You now have a blockchain account, which will be used to pay fees and deposits.
If you haven't already requested PILT, go to the faucet and request tokens for your <address>
.