VlxCore Kit adalah protokol berbasis WebRTC untuk menghubungkan DApp di jaringan Vexanium dengan wallet pengguna secara aman dan lintas perangkat (cross-device).
Dirancang agar ringan dan mudah diintegrasikan dalam aplikasi web, protokol ini memungkinkan DApp untuk:
- Otentikasi pengguna
- Menandatangani transaksi
- Menandatangani pesan
- Membuat shared secret untuk enkripsi end-to-end
- ✅ Login lintas perangkat melalui QR Code atau koneksi langsung
- ✍️ Tanda tangan transaksi blockchain
- 🧾 Tanda tangan pesan dengan keamanan kriptografi
- 🔐 Enkripsi peer-to-peer melalui shared secret (ECDH)
- 🌐 Berbasis PeerJS & WebRTC
npm install vlxcore-kitimport { VlxCore } from "vlxcore-kit";
const vlxcore = new VlxCore();
// Event ketika wallet terhubung dan mengirim sesi
vlxcore.on("session", handleSession);
// Hubungkan ke signaling server
vlxcore.connect();const vsr = vlxcore.createLoginRequest(
"DApp Vexanium 101",
"https://example.com/icon.png"
);
const request = vsr.split(":")[1];
// Buka wallet melalui URL
const walletUrl = `https://vlxcore.web.app/login?vsr=${request}`;
window.open(walletUrl, "Vexanium Wallet");function handleSession(session, proof) {
const account = proof.signer.toString(); // misalnya: aiueo@active
// Menyediakan cache ABI untuk efisiensi
session.setABICache(abiCache);
// Dengarkan jika wallet terputus
session.onClose(() => {
console.log("🔌 Wallet disconnected");
});
// Simpan session untuk transaksi selanjutnya
Store.session = session;
}// Ambil ABI untuk kontrak vex.token
const abi = await abiCache.getAbi("vex.token");
const data = {
from: "aiueo",
to: "babibu",
quantity: "1.0000 VEX",
memo: "Percobaan kirim VEX"
};
// Buat action
const action = Action.from({
account: "vex.token",
name: "transfer",
data,
authorization: [Store.session.permissionLevel]
}, abi);
// Kirim transaksi ke wallet
const result = await Store.session.transact({ action });
console.log("Transaction ID:", result.transaction_id);const message = "Saya menyetujui login pada DApp XYZ";
const signature = await Store.session.signMessage(message);
console.log("Signature:", signature.toString());import { PublicKey } from "@wharfkit/antelope";
const pubKey = PublicKey.from("PUB_K1_..."); // public key dari lawan komunikasi
const secret = await Store.session.sharedSecret(pubKey);
console.log("Shared Secret:", secret.toString());VlxCore: Kelas utama untuk inisialisasi, koneksi, dan login requestWalletSession: Kelas yang digunakan setelah autentikasi untuk berinteraksi dengan wallet (transaksi, tanda tangan, dll.)