Casper Snap helper is used to install Casper snap and expose API toward snap.
// Check if MetaMask flask is installed
import {
getAccount,
getSnap,
installSnap,
signDeploy,
signMessage,
signTransaction,
} from 'casper-manager-helper';
import {
PublicKey,
DeployHeader,
Timestamp,
Duration,
ExecutableDeployItem,
TransferDeployItem,
Deploy,
NativeTransferBuilder,
TransactionV1,
} from 'casper-js-sdk';
// Get Casper Snap to check if it's installed
const casperSnap = await getSnap();
// If Casper Snap isn't installed, intall it.
if (!casperSnap) {
await installSnap();
}
const address = await getAccount(); // Same as getAccount(0);
console.log(`Snap installed, account generated with address: ${address}`);
const header = new DeployHeader(
'casper',
[],
1,
new Timestamp(new Date()),
new Duration(3600000),
);
header.account = address;
const session = new ExecutableDeployItem();
session.transfer = TransferDeployItem.newTransfer(
'100000000000',
PublicKey.fromHex(
'0168e3a352e7bab76c85fb77f7c641d77096dae55845c79655522c24e9cc1ffe22',
),
undefined,
0,
);
const transfer = Deploy.makeDeploy(
header,
ExecutableDeployItem.standardPayment('1'),
session,
);
const signedTransfer = await signDeploy(transfer, {
addressIndex: 0,
});
console.log(Deploy.toJSON(signedTransfer));
const transferTransaction = new NativeTransferBuilder()
.from(address)
.target(
PublicKey.fromHex(
'0168e3a352e7bab76c85fb77f7c641d77096dae55845c79655522c24e9cc1ffe22',
),
)
.amount('25000000000') // Amount in motes
.id(Date.now())
.chainName('casper-net-1')
.payment(100_000_000)
.build()
.getTransactionV1();
const signedTransferTransaction = await signTransaction(transferTransaction, {
addressIndex: 0,
});
console.log(TransactionV1.toJSON(signedTransferTransaction));
const signedMessage = signMessage('Hello world', {
addressIndex: 0,
});
console.log(signedMessage);