import { DemosClient } from '@kynesyslabs/demosdk'
import { deriveStorageAddress } from '@kynesyslabs/demosdk/storage'
async function main() {
// 1. Initialize SDK
const demos = new DemosClient({
rpcUrl: 'https://rpc.demos.network',
privateKey: process.env.PRIVATE_KEY
})
const myAddress = await demos.getAddress()
console.log('Connected as:', myAddress)
// 2. Generate storage address
const programName = "userProfile"
const storageAddress = deriveStorageAddress(myAddress, programName)
console.log('Storage address:', storageAddress)
// 3. Create storage program
console.log('Creating storage program...')
const createResult = await demos.storageProgram.create(
programName,
"private",
{
initialData: {
displayName: "Alice",
joinedAt: Date.now(),
stats: {
posts: 0,
followers: 0
}
}
}
)
console.log('Created! TX:', createResult.txHash)
// 4. Wait for transaction confirmation (optional but recommended)
await demos.waitForTransaction(createResult.txHash)
console.log('Transaction confirmed')
// 5. Read the data back
const data = await demos.storageProgram.read(storageAddress)
console.log('Data retrieved:', data.data.variables)
console.log('Metadata:', data.data.metadata)
// 6. Update some data
console.log('Updating stats...')
const updateResult = await demos.storageProgram.write(
storageAddress,
{
stats: {
posts: 5,
followers: 42
},
lastActive: Date.now()
}
)
console.log('Updated! TX:', updateResult.txHash)
// 7. Read specific field
const stats = await demos.storageProgram.read(storageAddress, 'stats')
console.log('Stats:', stats)
}
main().catch(console.error)